【问题标题】:Make sure app.config from console project copies to bin folder of web project确保 app.config 从控制台项目复制到 web 项目的 bin 文件夹
【发布时间】:2014-01-16 18:44:27
【问题描述】:

我继承了一个项目,该项目具有一个解决方案和多个项目:

  • 实用程序 A - 控制台应用程序
  • 实用程序 B - 控制台应用程序
  • Commons C - 由其他项目共享
  • Web App D - 提供管理和支持功能

现在,D引用了A和B中的一些代码,也就是说A.exeB.exe被复制到了D的bin文件夹中,但是其他进程偶尔需要直接调用A.exeB.exe。它们不能直接从D\bin 调用,因为该文件夹只包含.exe,而不是app.config 文件。

之前的解决方法是将 A、B 和 D 部署到不同的目标,A.exe.configB.exe.config 仅部署在它们自己的文件夹中。当它可能只是一个时,我想摆脱 3 种不同的部署,但我不知道该怎么做。我试过摆弄各种“构建操作”和“复制到输出”选项,但似乎没有任何效果。

如何让 Visual Studio 将 A\app.config 复制到 D\A.exe.config?理想情况下,没有构建后脚本。

【问题讨论】:

    标签: c# visual-studio-2012 msbuild app-config


    【解决方案1】:

    对于自定义部署,我总是必须依靠构建后脚本才能正确完成(不幸的是,它们不如 C++ 中的好)。

    我所做的另一件事是设置项目,以便所有项目的构建输出位于同一位置(当然,尊重调试和发布),然后将配置文件添加到各自的解决方案中并更改配置文件的“复制到输出”属性为“如果较新则复制”。这将确保所有内容都在同一个地方结束,并带有依赖项,并且您不需要构建后脚本。

    【讨论】:

    • 我已经考虑了这两个选项,但我希望有更好的方法。这最终将需要集成到更大的包/部署过程中,并且 VS 自动执行的越多越好。将所有内容一起部署到同一个文件夹可能会奏效,但我还没有尝试过,而且我有点担心将多个项目构建到同一个目的地。
    • @p.s.w.g,我理解您的担忧 - 它们实际上并没有 build 在同一目录中,但输出放置在该目录中(作为项目的属性)。 Visual Studio 的标准行为是复制您引用的依赖项。如果您的项目的依赖项设置正确(项目D 依赖于项目AB),那么它们会首先构建。在D 的编译过程中是否再次复制它们是任何人的猜测,但这不重要——除非你有一些深奥的事情发生。
    • @p.s.w.g,作为旁注,输出目录设置为 all 项目的自定义位置,而不是“哦,将所有内容复制到 this 项目位置”。这意味着最终的部署目录是所有项目输出的合并,与它们自己的构建目录没有任何相似之处。
    • 您是正确的,项目将按顺序构建,但打包/部署步骤是我所关心的。我必须有三个不同的部署步骤,首先是 D,然后 A 和 B 部署到 D 的 bin 文件夹中(根据需要覆盖 .exe 文件)。它仍然感觉很乱,但是,是的,这应该工作。
    • @p.s.w.g 是的 - 不幸的是,如果没有卷起袖子并编写一些自定义的构建后脚本(正如我之前提到的,它们远没有 C++ 对应的灵活),你就会被输出卡住目录。与 C++ 相比,为什么微软决定减少 C# 中的构建功能是任何人的猜测。 (通过减少功能,我的意思是我们可以轻松地在 C++ 下的输出目录中使用宏,但在 C# 中则不然)
    猜你喜欢
    • 2017-08-07
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2017-11-29
    相关资源
    最近更新 更多