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

时间:2010-03-26 15:48:07

标签: c# .net asp.net visual-studio class-library

这是我的项目结构:

  • Web应用程序项目
    • 在同一个Visual Studio 2008解决方案中具有对类库1的项目引用
  • 班级图书馆1
    • 在同一解决方案中具有对类库2的项目引用
  • 班级图书馆2
    • 有一个标记为Build Action:Embedded Resource and Copy to Output Directory的文件:Always Always

这是我的问题:

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

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

1 个答案:

答案 0 :(得分:11)

我认为您需要将其标记为内容 +始终复制。

有关不同Visual Studio文件属性的详细信息,请参阅this page


更新1

尝试在Web应用程序项目中创建指向该文件的链接。你可以通过......来做到这一点。

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

  6. 更新2

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

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

    另外,尝试重建所有。


    更新3

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

    所以,我认为您将需要执行以下操作之一......

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