【发布时间】: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的输出目录中。
这在我的情况下显然没有发生,这是我提出问题的基础!
有两个对我来说似乎很明显的解决方法:
- 可以将 Content 文件夹和文件添加到控制台项目中。
- 构建后事件可用于在控制台项目构建完成后复制文件。
但它们都有相同的缺点:
这不是必须的!这在 Rebuild 下有效的事实表明这对 Build 也应该有效,但是出了点问题。
-
这是一个手动更改,开发人员在添加对项目 B 的引用时必须注意并采取行动。只需添加项目引用并使其全部正常工作就不容易出错。
【问题讨论】:
-
你有没有弄明白这件事?我遇到了同样的问题,只有 3 个级别的项目依赖项
-
很遗憾没有,抱歉。
标签: c# visual-studio visual-studio-2017