gpt4 book ai didi

c# - 使用 MSBuild 构建后运行测试时出现 MissingManifestResourceException(.mresource 在 list 中有路径)

转载 作者:行者123 更新时间:2023-11-30 14:02:02 25 4
gpt4 key购买 nike

我在命令行上使用 MSBuild 构建服务器上的 C# 项目的嵌入式资源时遇到问题。在 Visual Studio 中构建和运行测试时,该项目工作正常,但从命令行运行 MSBuild 时,我在运行测试时遇到以下问题:


System.Resources.MissingManifestResourceException:找不到适合指定文化或中性文化的任何资源。确保“.Properties.Resources.resources”在编译时已正确嵌入或链接到程序集“”,或者确保所需的所有附属程序集都是可加载且完全签名的。

System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(字符串文件名)在 System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo 文化,Dictionary`2 localResourceSets, bool tryParents, bool createIfNotExists,StackCrawlMark 和 stackMark)在 System.Resources.ResourceManager.InternalGetInfoSet( requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark) 在 System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) 在 System.Resources.ResourceManager.GetString(String name, CultureInfo culture) 在 Properties.Resources.get_SomeResource () 在\Properties\Resources.Designer.cs 中:第 87 行


我已将问题追踪到生成的 IL(我使用 ildasm)。在 Visual Studio 中构建时,在程序集的 list 中设置以下内容:

.mresource public <PROJECTNAME>.Properties.Resources.resources
{
// Offset: 0x00000000 Length: 0x00000236
}

但是当使用 MSBuild 构建时,会生成以下输出:

.mresource public '../..//Build/<PROJECTNAME>_AnyCPU_Debug_Obj/<PROJECTNAME>.Properties.Resources.resources'
{
// Offset: 0x00000000 Length: 0x00000236
}

正如您所见,资源路径突然成为资源名称的一部分。

有没有人知道如何解决这个问题?

最佳答案

似乎将 LogicalName 添加到项目文件中可以修复它:

<LogicalName>$(RootNamespace).Properties.Resources.resources</LogicalName> 

即因此项目文件中的嵌入式资源条目如下所示:

<ItemGroup>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<LogicalName>$(RootNamespace).Properties.Resources.resources</LogicalName>
</EmbeddedResource>
</ItemGroup>

详见:http://blogs.msdn.com/b/msbuild/archive/2007/10/19/manifest-resource-names-changed-for-resources-files.aspx

请注意,我们使用的是 .resx 文件,但错误似乎仍然存在。

关于c# - 使用 MSBuild 构建后运行测试时出现 MissingManifestResourceException(.mresource 在 list 中有路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com