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

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

这是我的项目结构:

  • 网络应用项目
    • 在同一个 Visual Studio 2008 解决方案中有对类库 1 的项目引用
  • 类库 1
    • 在同一解决方案中有对类库 2 的项目引用
  • 类库 2
    • 有一个文件标记为构建操作:嵌入资源并复制到输出目录:始终复制

这是我的问题:

当我构建我的 Web 应用程序项目时,Class Library 2 中的嵌入式资源未按应有的方式复制到 Web 应用程序项目的 bin 目录中。如果我将项目引用直接从我的 Web 应用程序项目添加到类库 2,该文件将复制到 bin 目录。

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

最佳答案

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

引用this page有关不同 Visual Studio 文件属性的详细信息。


更新 1

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

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

更新 2

在引用库项目中的任何文件上始终使用 Content/Copy 应该会导致文件被复制到主项目的 bin 文件夹中。如果文件在文件夹中,它将在 bin 文件夹中的那个文件夹中。

确保如果您正在进行发布构建,您正在寻找 bin/Release,如果您正在进行调试构建,您正在寻找 bin/Debug。

另外,尝试重建所有。


更新 3

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

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

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

关于c# - 如何从另一个类库引用的类库中自动复制嵌入资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524567/

相关文章:

c# - 来自另一个应用程序域的 CreateInstance 适用于控制台应用程序,但在单元测试时抛出 MissingMethodException

c# - 调用线程无法访问此对象,因为另一个线程拥有它。WPF

c++ - 调试 .Net 和 C++ 应用程序

asp.net - Ninject owin 依赖项到 IIS Web 主机中以实现 ASP.net Identity

c# - 如何使 asp Validator 通过 jQuery/javascript 验证

asp.net - 是否可以将 aspnet core 发布到共享的 linux 服务器?

c# - 从 c# windows 服务应用程序 Hook 窗口事件不起作用

c# - WCF 服务调用总是在 30 秒后失败,并显示 (502) Bad Gateway

c# - 在 C# 中从 List<T> 中选择 N 个随机元素的算法

c# - HttpWebRequest 和原生 GZip 压缩