.Net 4.0 C# 项目中是不是需要 app.config?
Posted
技术标签:
【中文标题】.Net 4.0 C# 项目中是不是需要 app.config?【英文标题】:Is app.config required in .Net 4.0 C# projects?.Net 4.0 C# 项目中是否需要 app.config? 【发布时间】:2010-09-30 17:33:26 【问题描述】:令我烦恼的是,当我将目标从 .NET Framework 3.5 更改为 .NET Framework 4.0 时,Visual Studio 2010 将 App.config 文件添加到了我的所有 .EXE 项目中。所以在我签入这些新文件之前,我的自动构建中断了。
我不能删除这些 App.config 文件有什么特别的原因吗?还是 Visual Studio 会继续将它们添加到我的项目中?
我将避免抱怨将无用文件添加到我的项目中的工具。 . .
澄清:
我了解app.config
的用途。我不明白为什么当我将项目更改为面向 .NET 4.0 而不是 .NET 3.5 时,Visual Studio 2010 会将app.config
文件添加到现有项目中。我的应用程序不需要 app.config 中的任何内容即可运行,所以我唯一合理的结论是 Visual Studio 出于某种原因需要 app.config 才能编译,或者有人认为他们比我更了解我的应用程序必须有一个 app.config,即使我不想要。
哎呀...我咆哮了。
进一步说明:
将项目从 Visual Studio 2008 转换为 Visual Studio 2010 不是问题。当我将目标从 .NET Framework 3.5 更改为 .NET Framework 4.0 时,app.config 被添加到项目中。 app.config 包含以下内容:
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
当我将它改回目标 .NET Framework 3.5 时,app.config 文件被修改为:
<supportedRuntime version="v2.0.50727"/>
我想我明白他们想要做什么,但自动添加 app.config 文件是个非常糟糕的主意。
【问题讨论】:
【参考方案1】:我知道 app.config 在 .NET 4 项目中必需的唯一情况是您引用了 CLR-2.0 混合模式程序集。在这种情况下,您需要将 useLegacyV2RuntimeActivationPolicy="true" 添加到启动元素中,否则会在运行时出错。
但是VS转换工具并没有检测到这一点,并且默认添加了一个确实没有必要的app.config文件。如果您能够在转换后运行,这对您来说可能不是问题。
否则,您可以随意删除它(当然,除非您将其用于其他目的)。
【讨论】:
谢谢:“……并且默认添加了一个 app.config 文件,这真的没必要。”咕噜。【参考方案2】:app.config 文件不是必需的。没有它们,应用程序也能正常运行。
编辑
Reed 指出有一种情况是不正确的,值得注意
在一种情况下需要它 - 如果您的项目引用 CLR 2.0 混合模式程序集,则必须有一个 app.config 文件才能运行
【讨论】:
知道为什么 VS 2010 如此有帮助地在转换后的项目中添加一个吗? 在一种情况下需要它 - 如果您的项目引用 CLR 2.0 混合模式程序集,则必须有一个 app.config 文件才能运行。 @Reed,很有趣。不知道那个。将更新我的答案。 在这种情况下,有没有办法可以将它嵌入到我的 exe 中?我不喜欢仅仅为了支持混合模式程序集而需要外部文件【参考方案3】:在转换的配置文件中可能需要添加一些设置,如果您创建一个新项目,您不会自动获得app.config
。
您必须检查其中包含的内容以确定其中是否有需要的内容。
【讨论】:
重点是我的项目中没有app.config,运行正常。不知什么原因,VS 2010在我转换项目的时候添加了一个app.config。所以没有任何需要更改的设置。 不幸的是,转换工具总是添加这个,无论是否有必要。以上是关于.Net 4.0 C# 项目中是不是需要 app.config?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在面向 .Net 3.5 的项目中使用所有 C# 4.0 功能吗?
C# SSL WebSocket Client 中是不是有.net 4.0?
针对 .NET Framework 3.5 编译的项目允许 C# 4.0 功能
需要(RPC + C# .Net + Framework 4.0)示例 [关闭]