【问题标题】:Resource in .Net Standard project is not added to DLL.Net Standard 项目中的资源未添加到 DLL
【发布时间】:2019-09-11 02:30:48
【问题描述】:

添加到 .NET 标准项目的资源不会编译到 DLL 中。

我正在将 .NET Framework 项目移植到 .NET Standard。我的原始项目有一些资源,标记为“构建操作:资源”,正在被其他程序集使用。

.NET Standard 项目文件。


  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup> *** not sure why this is added by VS2019 **
    <None Remove="Resources\ErrorLarge.png" />
  </ItemGroup>

  <ItemGroup>
    <Resource Include="Resources\ErrorLarge.png" />
  </ItemGroup>

</Project>

DLL 内容和大小不会随着“构建操作”属性从“无”更改为“资源”而改变。我的消费者程序集自然会返回IOException: Cannot locate resource 'resources/errorlarge.png'. 错误。

VS2019 - 16.2.4

【问题讨论】:

  • 名称错误。在生成的程序集上运行 ildasm.exe 并确保您在清单中看到 .mresource。更正客户端代码以使用您看到的资源名称。
  • @HansPassant - 谢谢,但我不这么认为。我之前检查过 JustDecompile 并且 DLL 中没有资源。为了确认,我添加了一个大图像并重建,但文件大小和内容没有改变。

标签: c# visual-studio .net-standard .net-standard-2.0


【解决方案1】:

听起来您希望在 CSProj 文件中使用 EmbeddedResource 而不是 Resource

这似乎是useful at describing adding & reading them

【讨论】:

  • 谢谢。不幸的是,BuildAction:Embedded Resource 不能通过 Pack URI 使用。它们必须是 BuildAction:Resources,就像我们正在移植的 .NET Framework 程序集一样。
猜你喜欢
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 2019-10-27
  • 2020-09-15
  • 1970-01-01
  • 2018-05-04
相关资源
最近更新 更多