Csharp/C#教程:谁将app.config复制到app.exe.config?分享


谁将app.config复制到app.exe.config?

我正在编写一个游戏开发IDE,用于创建和编译.NET项目(我过去几年一直在研究),并且我正在更新它以生成输出,不仅适用于Windows / Visual Studio,还适用于对于Linux / MonoDevelop(一个非常简单的.NET进程,但仍需要一些调整)。

作为其中的一部分,我发现有必要开始生成app.config文件作为其中的一部分,以将依赖的DLL名称映射到具有元素的Linux依赖项名称。 我很担心谁负责将app.config文件复制到输出名称app.exe.config。 在Visual Studio项目中,app.config的Build Action通常设置为“None”,其设置表明它不会被复制到任何地方,但是当Visual Studio编译项目时它会生成app.exe.config(虽然我有时发现这是不可靠的)。 当我使用MSBuild构建IDE生成的解决方案文件(用于调试目的)时,MSBuild将app.config复制到app.exe.config。 但是当我使用CSharpCodeProvider.CompileAssemblyFromFile编译项目时(它自然)不喜欢将配置文件包含为源代码(“app.config(1,1):error CS0116:命名空间不直接包含诸如字段之类的成员或方法“),当然,当我不将它作为输入包括它时,它不会将它复制到输出。 我是否有责任单独将app.config复制到app.exe.config,或者有更标准的方法吗?

是否硬连线采用第一个* .config文件? 在我的IDE中,可以想象app.config文件将被重命名或添加另一个(就像在Visual Studio中一样)。 我觉得IDE对配置文件有这个秘密行为似乎很奇怪(我认为MonoDevelop在这方面表现相似,因为我找不到配置文件的特殊操作)。 我不知道它甚至会选择这个秘密行动适用的文件。

C#编译器根本不关心配置文件。 构建环境(MSBuild和VS)将负责自己复制该文件。

订购:

  1. 项目目录中的第一个带有无构建操作的app.config文件
  2. 项目目录中包含Content build action的第一个app.config文件
  3. 第一个带有无构建操作的app.config文件,位于子目录中
  4. 第一个带有内容构建操作的app.config文件,位于子目录中

msbuild / xbuild还允许您通过设置$(AppConfig)属性来覆盖它。

我认为MSBuild负责复制。 如果您要挖掘库存.target文件,那么您可能会找到相应的指令。 VS本身不会复制。

另请注意,Visual Studio确实validation了配置文件。

稍微更具技术性的答案 – 您的项目通过csproj文件中的此键引用Microsoft.CSharp.targets

  

此文件将解析为c:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets ,具体取决于您的框架版本。

在它里面你有这个部分做的工作:

         

App.Config文件似乎是作为一个环境变量传递的(它应该存在,但是谁设置它,我不知道):

   $(TargetFileName).config   

编辑:有关如何选择app.config,请参阅此答案 – https://stackoverflow.com/a/40293508/492336 。

app.config的处理很特殊,按名称处理,构建过程将按照以下顺序选择app.config文件:

上述就是C#学习教程:谁将app.config复制到app.exe.config?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/984214.html

(0)
上一篇 2021年12月20日
下一篇 2021年12月20日

精彩推荐