这是我的项目结构:
- 网络应用项目
- 在同一个 Visual Studio 2008 解决方案中有对类库 1 的项目引用
- 类库 1
- 在同一解决方案中有对类库 2 的项目引用
- 类库 2
- 有一个文件标记为构建操作:嵌入资源并复制到输出目录:始终复制
这是我的问题:
当我构建我的 Web 应用程序项目时,Class Library 2 中的嵌入式资源未按应有的方式复制到 Web 应用程序项目的 bin 目录中。如果我将项目引用直接从我的 Web 应用程序项目添加到类库 2,该文件将复制到 bin 目录。
如何在不添加不必要的引用的情况下复制嵌入的资源文件?
最佳答案
我认为您需要将其标记为内容 + 始终复制。
引用this page有关不同 Visual Studio 文件属性的详细信息。
更新 1
尝试在您的 Web 应用程序项目中创建指向该文件的链接。您可以通过...做到这一点
- 使用解决方案资源管理器右键单击您的 Web 项目(或其中的文件夹)
- 选择添加 > 现有项目
- 导航到您的文件并选择它
- 单击“添加”按钮右侧的小箭头,然后选择“添加为链接”
更新 2
在引用库项目中的任何文件上始终使用 Content/Copy 应该会导致文件被复制到主项目的 bin 文件夹中。如果文件在文件夹中,它将在 bin 文件夹中的那个文件夹中。
确保如果您正在进行发布构建,您正在寻找 bin/Release,如果您正在进行调试构建,您正在寻找 bin/Debug。
另外,尝试重建所有。
更新 3
我现在明白你在说什么了。当您引用不在您的解决方案中的库 DLL 时,您仅引用该 DLL,而不是该项目中的任何其他内容。
所以,我认为您需要执行以下操作之一...
- 将该项目包含在您的解决方案中
- 文件链接(如更新 1)
- 创建一个名为
MyLibraryContentFiles
的新项目,它只有库项目的内容文件,但没有代码,并将该项目包含在您的解决方案中。您可能会发现将内容文件与代码分开无论如何都是有利的。 - 将您需要的任何文件嵌入到库项目 (DLL) 中(使用嵌入式资源),然后在公共(public)类上提供一个属性,该属性提供某种类型的接口(interface)来引用该文件。如果它是一个图像文件,您可以返回一个
Image
对象。如果它是一个文本文件,您可以返回一个普通的string
。
关于c# - 如何从另一个类库引用的类库中自动复制嵌入资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524567/