Visual Studio在Rebuild上复制依赖项目中的“Content”文件,但不在Build

时间:2017-06-19 14:54:55

标签: c# visual-studio visual-studio-2017

我有两个项目的解决方案:

  • 项目A.
    • 这是一个C#控制台应用程序。
  • 项目B.
    • 这是一个C#类库。

项目A通过项目依赖性引用项目B. 项目B包含一个文件夹,在此文件夹中有一些文件。

这些文件的属性设置为:

  • Build Action
    • Content
  • Copy to Output Directory
    • Copy if newer(也尝试使用Copy Always

当我构建项目B时,内容文件夹中的文件将被复制到项目B的输出文件夹。
例如项目B / bin中/调试/ contentfolder /文件

当我重建项目A时,内容文件夹中的文件将被复制到项目A的输出文件夹中。
例如项目A / bin中/调试/ contentfolder /文件

当我构建项目A时,内容文件夹中的文件被复制到项目A的输出文件夹。
例如ProjectA / bin / debug / contentfolder / 此处没有文件

我可以理解Visual Studio是否由于某种原因“无法看到”依赖项目中的文件,并且文件从未复制到ProjectA的输出中。

但事实并非如此,因为它在重建过程中起作用。

所以我觉得我做错了什么,没有注意到,或者Visual Studio做错了什么,需要修复。

我发现这个问题与我的问题类似:Visual Studio Build vs Rebuild: Why are my DLLs only sometimes being copied into the output directory?

然而它没有任何答案,并且它不是重复的,因为我更清楚我的解决方案布局以及发生此行为的环境。

有一个较旧的问题,此处有一个接受的答案:Why the native DLL is not copied to the output directory

但它说:
(注意:他们对项目A / B的使用与我的相反。)

  

如果C#项目B直接引用项目A,VS会将项目A使用的所有相关文件复制到项目B的输出目录。

在我的案例中显然没有发生这种情况,这是我提问的基础!

对我来说,有两种解决办法显而易见:

  1. 可以将Content文件夹和文件添加到控制台项目中。
  2. 构建后事件可用于在控制台项目构建完成后复制文件。
  3. 但它们都有相同的缺点:

    • 这不应该是必要的!这在Rebuild下工作的事实表明这也适用于Build,但是出了点问题。

    • 这是一个手动更改,开发人员在添加对项目B的引用时必须了解并采取措施。只需添加项目引用并使其全部工作就不容易出错。

      < / LI>

1 个答案:

答案 0 :(得分:1)

我有类似的问题 - 有内容(在我的情况下为connections.config)被复制到2个项目 - 两个项目都在重建时复制了文件,但其中一个没有在构建时复制它。

我已经添加了对源项目本身的引用,现在它工作得很好,我假设在项目没有引用的构建时没有看到项目详细信息,而在“重建所有“它确实。