我对 Visual Studio 2008 中的“复制到输出”功能有疑问。也许我误解了它应该如何工作。
我有四个项目的解决方案:
- TestApp1(Windows 应用程序)
- TestAppA(Windows 应用程序)
- TestProj1(类库)
- TestProjA(类库)
依赖项如下(依赖项如项目参考)。
- TestProj1 不依赖任何东西。
- TestApp1 依赖于 TestProj1
- TestProjA 依赖于 TestProj1
- TestAppA 依赖于 TestProjA(因此间接依赖于 TestProj1)
换句话说,依赖树看起来像这样。
TestApp1
TestProj1
TestProjA
TestProj1
TestAppA
TestProjA
TestProj1
(每个项目也引用了标准程序集(system、system.core 等))
在 TestProj1 中,我添加了一个文本文件 Test.txt。在此文件的属性中,我指定了“构建操作:内容”和“复制到输出目录:始终复制”。
当我构建解决方案时,Test.txt 被复制到
- TestApp1\bin\Debug
- TestProj1\bin\Debug
- TestProjA\bin\Debug
该文件没有复制到 TestAppA\bin\debug ,这就是我觉得奇怪的地方。由于TestProj1 依赖Test.txt 工作,而TestAppA 依赖TestProj1,通过TestProjA,TestApp1 将无法工作。
如果我将来自 TestAppA 的项目引用直接添加到 TestProj1(因此我有一个对 TestProj1 的引用和另一个对 TestProjA 的引用),该文件将被复制到 TestAppA\bin\debug 文件夹。
当然,我可以设置一个自定义构建事件来将文件 Test.txt 复制到 TestAppA\bin\debug,但是我对自定义构建事件有不好的体验,并且更愿意依赖内置的复制机制。
所以我的问题是:为什么不将 Test.txt 复制到 TestAppA\Bin\debug?