为什么我的 resx 文件为升级的 NetStandard 项目生成 System.Drawing.Icon
Why is my resx file generating System.Drawing.Icon for Upgraded NetStandard Project
我修改了现有的 .net 461 项目以使用 netstandard 2.0,方法是创建一个新的项目文件并将目标框架切换为 netstandard20
除了我的包含图标的资源文件外,一切似乎都正常。我将以下内容添加到我的 csproj 文件中以确保生成为 运行:
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
但是,每次生成 Designer.cs 文件时,它都会引用 System.Drawing.Icon
,这对 .Net 标准项目无效。如何配置设计器文件以正确使用 System.Byte[]
作为我的图标资源?
Resource.resx
文件具有用于生成的类型名称嵌入在 XML 中。您需要使用文本编辑器修改此文件并将其定向为使用 System.byte[]
而不是 System.Drawing.Icon
.
例如,您的 resource.resx 文件中可能有以下条目:
<data name="FooBar" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FooBar.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
您可以将输出类型更新为字节数组,如下所示:
<data name="FooBar" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FooBar.ico;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
我修改了现有的 .net 461 项目以使用 netstandard 2.0,方法是创建一个新的项目文件并将目标框架切换为 netstandard20
除了我的包含图标的资源文件外,一切似乎都正常。我将以下内容添加到我的 csproj 文件中以确保生成为 运行:
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
但是,每次生成 Designer.cs 文件时,它都会引用 System.Drawing.Icon
,这对 .Net 标准项目无效。如何配置设计器文件以正确使用 System.Byte[]
作为我的图标资源?
Resource.resx
文件具有用于生成的类型名称嵌入在 XML 中。您需要使用文本编辑器修改此文件并将其定向为使用 System.byte[]
而不是 System.Drawing.Icon
.
例如,您的 resource.resx 文件中可能有以下条目:
<data name="FooBar" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FooBar.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
您可以将输出类型更新为字节数组,如下所示:
<data name="FooBar" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FooBar.ico;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>