Я пишу IDE для разработки игр, который создает и компилирует .NET-проекты (с которыми я работал в течение последних нескольких лет), и сейчас я обновляю его, чтобы генерировать выходные данные не только для Windows/Visual Studio, но также и для Linux/MonoDevelop (невероятно простой процесс для .NET, но все еще требующий некоторых настроек).
Как часть этого, я счел необходимым начать генерировать файл app.config как часть этого для сопоставления зависимых имен DLL с именами зависимостей Linux с <dllmap> элементы. Я смущен тем, кто отвечает за копирование файла app.config в выходное имя app.exe.config. В проекте Visual Studio для Action для app.config обычно устанавливается значение "Нет", и его настройки указывают, что он не будет скопирован нигде, но когда Visual Studio компилирует проект, он создает app.exe.config( хотя иногда я обнаружил, что это ненадежно). Когда я использую MSBuild для создания файла решения, сгенерированного IDE (для целей отладки), MSBuild копирует app.config в app.exe.config. Но когда я скомпилирую проект с CSharpCodeProvider.CompileAssemblyFromFile, ему (естественно) не нравится, что файл конфигурации включен в качестве исходного кода ( "app.config(1,1): ошибка CS0116: пространство имен не содержит непосредственно элементы, такие как поля или методы" ), и, конечно, он не копирует его на вывод, если я не включаю его в качестве ввода. Могу ли я просто скопировать приложение app.config в app.exe.config самостоятельно или есть более стандартный способ сделать это?
Затруднительно ли перенести первый файл *.config? В моей среде IDE можно было бы переименовать файл app.config или добавить еще один (как в Visual Studio). Мне кажется странным, что в IDE есть это секретное действие для файлов конфигурации (я думаю, что MonoDevelop ведет себя аналогично в этом отношении, потому что я не мог найти специальное действие для файлов конфигурации там). Я не знаю, как он даже выбирает, в каких файлах применяется это секретное действие.