我正在编写一个游戏开发 IDE,它创建和编译 .NET 项目(我在过去几年一直在研究)并且正在更新它以生成不仅适用于 Windows/Visual Studio 的输出,还用于 Linux/MonoDevelop(.NET 的一个非常简单的过程,但仍需要一些调整)。
作为其中的一部分,我发现有必要开始生成一个 app.config 文件作为其中的一部分,以将依赖的 DLL 名称映射到具有 <dllmap> 元素的 Linux 依赖项名称。我对谁负责将 app.config 文件复制到输出名称 app.exe.config 感到困惑。在 Visual Studio 项目中,app.config 的构建操作似乎通常设置为“无”,其设置表明它不会被复制到任何地方,但是当 Visual Studio 编译项目时,它会生成 app.exe.config (虽然我有时发现这是不可靠的)。当我使用 MSBuild 构建由 IDE 生成的解决方案文件时(用于调试目的),MSBuild 将 app.config 复制到 app.exe.config。但是当我使用 CSharpCodeProvider.CompileAssemblyFromFile 编译项目时,它(自然)不会 t 喜欢将配置文件作为源代码包含在内(“app.config(1,1) : error CS0116: A namespace does not directly contain members such as fields or methods”),当然它不会将其复制到当我不将其作为输入时输出。将 app.config 独立复制到 app.exe.config 是我的责任,还是有更标准的方法?
获取第一个 *.config 文件是硬连线吗?在我的 IDE 中,可以想象 app.config 文件将被重命名或添加另一个文件(就像在 Visual Studio 中一样)。对我来说,IDE 对配置文件有这个秘密操作似乎很奇怪(我认为 MonoDevelop 在这方面的行为类似,因为我也找不到配置文件的特殊操作)。我什至不知道它如何选择此秘密操作适用的文件。