【问题标题】:Visual Studio copies "Content" files from dependency projects on Rebuild, but not on BuildVisual Studio 在 Rebuild 上从依赖项项目中复制“内容”文件,而不是在 Build 上
【发布时间】:2017-06-19 14:54:54
【问题描述】:

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

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

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

这些文件的属性设置为:

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

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

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

当我构建项目 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

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

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

这在我的情况下显然没有发生,这是我提出问题的基础!


有两个对我来说似乎很明显的解决方法:

  1. 可以将 Content 文件夹和文件添加到控制台项目中。
  2. 构建后事件可用于在控制台项目构建完成后复制文件。

但它们都有相同的缺点:

  • 这不是必须的!这在 Rebuild 下有效的事实表明这对 Build 也应该有效,但是出了点问题。

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

【问题讨论】:

  • 你有没有弄明白这件事?我遇到了同样的问题,只有 3 个级别的项目依赖项
  • 很遗憾没有,抱歉。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2018-08-15
    • 2010-10-14
    • 2012-09-05
    • 2023-04-11
    相关资源
    最近更新 更多