令我非常烦恼的是,当我将目标从 .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 文件是一个非常糟糕的主意。
我唯一知道 app.config 在 .NET 4 项目中是必需的是当您引用 CLR-2.0 混合模式程序集时。在这种情况下,您需要将 useLegacyV2RuntimeActivationPolicy="true" 添加到启动元素中,否则您将在运行时收到错误。
但是VS转换工具并没有检测到这一点,并且默认添加了一个确实没有必要的app.config文件。如果您能够在转换后运行,这对您来说可能不是问题。
否则,您可以随意删除它(当然,除非您将其用于其他目的)。
app.config 文件不是必需的。没有它们,应用程序也能正常运行。
编辑
Reed指出有一种情况并非如此,值得注意
有一种情况是必需的 - 如果您的项目引用 CLR 2.0 混合模式程序集,则必须有一个 app.config 文件才能运行
在转换过程中,可能需要在配置文件中添加一些设置,如果您创建一个新项目,您不会自动获得
app.config
。
您必须检查其中包含的内容,以确定其中是否有需要的内容。
只是问一个后续问题:我们在 .NET Standard 2.0 和 .NET Framework 4.8 中获得了 .NET 项目。我们正在将所有项目迁移到 .NET 6/7。 我们可以安全地删除这些app.configs吗?