.net - 如何强制 app.config 成为 exe.config

标签 .net visual-studio f# f#-4.0

这可能是一个错误,但我的解决方案中有 2 个 F# 项目。一个是控制台应用程序,另一个是测试应用程序(在技术上也期望测试控制台)。解决方案中还有 3 个其他 C# 项目。

当我构建我的解决方案时,启动项目中的 app.config 不会复制到 foo.exe.config。而是创建一个默认的 F# 配置文件并将其放置在那里。

正在生成的文件看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

在我的解决方案中,没有一个应用程序配置看起来像那样。我已经检查过我的 app.configs 是否设置为内容模式。这也只是主应用程序的问题;测试应用程序将 app.config 复制到它的 bin/debug 中就好了。

每次我想运行程序之前,我都求助于打开 bin 并将正确的 exe.config 拖放到目录中。我什至不知道从哪里开始寻找可能没有正确配置的内容。

最佳答案

你为什么认为这是一个错误?数以千计的 app.configs 每秒都会被复制 - 你会认为这已经过很好的测试。您的项目设置方式可能有问题。您可能想要查看项目文件(提示:它是您可以阅读的常规 xml 文件)。

如果您通过 VS 构建项目,我建议您首先提高 MSBuild 的详细程度(工具 -> 选项 -> 项目和解决方案 -> 构建和运行选项卡)。

完成后,清理并重建您的项目。当您搜索 CopyAppConfigFile 时,您应该能够在“构建输出”窗口中找到复制 app.config 文件的任务的输出。 .这应该告诉您什么(如果有的话)真正被复制 - 以及从哪里复制。

以同样的方式,您可以发现作为构建过程一部分的任何其他任务是否出于任何原因尝试覆盖文件 - 只要它产生正确的日志输出。

关于.net - 如何强制 app.config 成为 exe.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41902887/

相关文章:

c# - 表单 View 设计器无法在使用 C# .NET Core 3.1 的 Visual Studio 2019 中工作

f# - 空格敏感 FParsec

f# - F# 中的矩阵转置

c# - 为什么 CancellationTokenSource 调用 cancel 后任务状态没有变为已取消

c# - 在这种情况下,为什么未使用的构造函数会导致程序集依赖性?

.net -/LinkResource 在 Visual Studio 2010 中

控制台应用程序引用的 C# 版本控制

f# - 使用列表中的 Discriminated union 测试相等性

c# - 搜索有关构建大型企业系统的信息

c# - 如何在c#中正确关闭线程