【问题标题】:ClickOnce is publishing the wrong app.configClickOnce 发布了错误的 app.config
【发布时间】:2013-11-21 17:22:24
【问题描述】:

我有一个 wpf clickonce 应用程序,它根据配置使用多个 app.configs。当我构建它时输出正确的 app.config,但是当我发布它时使用错误的 app.config。

这是我的设置:

  • App.config - 虚拟的空配置文件。
  • App.Debug.config - 调试配置
  • App.Test.config - 测试配置
  • App.UAT.config - UAT
  • App.Prod.config - 生产

我的项目设置中有一个“AfterCompile”任务,它根据环境配置应用正确的配置文件,效果很好。但是当我使用 VS2012 发布向导时,它使用虚拟配置文件,而不管配置设置。

【问题讨论】:

  • 我正在尝试找到一种解决方案,它不涉及在构建或发布后手动复制/粘贴/修改任何文件,因为这是自动化过程的一部分。
  • 我遇到了同样的问题,已经在这里回答了:stackoverflow.com/q/58811775/196526

标签: wpf visual-studio-2012 clickonce app-config publish


【解决方案1】:

尝试改用 BeforeCompile 脚本。我也遇到过同样的情况,需要在编译前更新 App.config 文件。

Pre-build 事件命令行中的以下内容应该为您完成。

  IF "$(ConfigurationName)" == "Development" (
  COPY "$(ProjectDir)App.Development.config" "$(ProjectDir)App.config"
  )

【讨论】:

  • 试过这个,它不会工作,因为它替换了源文件。如果文件是只读的(因为它没有从 TFS 中签出),它将失败。我的输出文件都是正确的,所以这告诉我发布命令没有使用构建生成的输出文件来发布。
  • 根据我的经验,ClickOnce 使用位于项目目录中的 App.config。如果您使用的是 SVN 之类的东西,我可以看到 TFS 会在这里给您带来问题。是否可以使 App.config 不是 SVN 控制的文件?在您的情况下,它是空白的,不需要受源代码控制。 (我是 git/hg 用户,从未使用过 SVN,所以我不确定)
【解决方案2】:

根据此线程中的其他帖子,我开始工作了。我的配置文件位于名为 Config 的项目文件夹中,这些文件中包含项目配置名称。示例文件名:App.Debug.Config 所以这对我有用。它被放入 .csproj 文件中。

 <Target Name="BeforeBuild">
    <Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config" DestinationFiles="$(ProjectDir)App.config" OverwriteReadOnlyFiles="true" />
  </Target>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2010-10-24
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多