如何从另一个类库引用的类库中自动复制嵌入式资源?

Aar*_*ron 3 .net c# asp.net class-library visual-studio

这是我的项目结构:

  • Web应用程序项目
    • 在同一个Visual Studio 2008解决方案中具有对类库1的项目引用
  • 班级图书馆1
    • 在同一解决方案中有项目引用类库2
  • 班级图书馆2
    • 有一个文件标记为构建操作:嵌入式资源和复制到输出目录:始终复制

这是我的问题:

当我构建我的Web应用程序项目时,类库2中的嵌入式资源不会像应该的那样复制到Web应用程序项目的bin目录中.如果我直接从Web应用程序项目向类库2添加项目引用,则将文件IS复制到bin目录.

如何在不添加不必要的引用的情况下复制嵌入式资源文件?

dev*_*xer 11

我认为您需要将其标记为Content + Copy Always.

有关不同Visual Studio文件属性的详细信息,请参阅此页面.


更新1

尝试在Web应用程序项目中创建指向该文件的链接.你可以这样做......

  1. 使用解决方案资源管理器右键单击您的Web项目(或其中的文件夹)
  2. 选择添加>现有项目
  3. 导航到您的文件并选择它
  4. 单击"添加"按钮右侧的小箭头,然后选择"添加为链接"

更新2

使用内容/复制始终在引用的库项目中的任何文件上都应该将文件复制到主项目的bin文件夹中.如果文件位于文件夹中,则它将位于bin文件夹中的该文件夹中.

确保如果您正在进行发布版本,那么您正在查看bin/Release,如果您正在进行Debug构建,那么您正在查看bin/Debug.

另外,尝试重建全部.


更新3

我明白你现在在说什么.当您引用不在解决方案中的库DLL时,您引用DLL,而不是该项目中的任何其他内容.

所以,我认为您将需要做以下其中一项......

  1. 在解决方案中包含该项目
  2. 链接到文件(如Update 1中所示)
  3. 创建一个名为类似的项目MyLibraryContentFiles,包含库项目的内容文件,但不包含代码,并在您的解决方案中包含此项目.您可能会发现将内容文件与代码分开是有利的.
  4. 在库项目(DLL)中嵌入您需要的任何文件(使用嵌入式资源),然后在公共类上提供一个属性,该属性提供某种用于引用该文件的接口.如果是图像文件,则可以返回Image对象.如果是文本文件,则可以返回普通文件string.