我对 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?

    最佳答案

    Todd 的回答已经很好了,但有两种更常见的解决方案是:

  • 向您的依赖项目添加构建后步骤,将 Test.txt 复制到其输出文件夹中
  • 将文本文件作为嵌入资源添加到 TestProj1 项目的程序集中,并完全摆脱对外部数据文件的需要

  • 我还建议您的所有依赖项都可以简单地调用 TestProj1 中的 API 来检索它们需要的信息,从而允许该程序集封装数据并将其存储在任何地方,并且以它喜欢的任何格式存储。

    关于visual-studio-2008 - Visual Studio 2008 项目引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1839630/

    10-12 02:53