gpt4 book ai didi

visual-studio-2010 - 如何在 Visual Studio 2010 中设置资源逻辑名称?

转载 作者:行者123 更新时间:2023-12-04 05:32:37 25 4
gpt4 key购买 nike

将解决方案从 VS2008 迁移到 VS2010 时遇到问题。问题是在某些情况下在运行时找不到托管资源,因为它们没有嵌入正确的名称:

“找不到适用于指定文化或中性文化的任何资源。确保在编译时将“Production.ViewDocument.resources”正确嵌入或链接到程序集“RSProcess”中,或者所有所需的附属程序集都可加载且完全签了。”

System.Resources.MissingManifestResourceException 通常在对通过类型 id 创建的资源的 ApplyResources 调用中引发 InitializeComponent。在我的例子中,命名空间是 Production,类名是 ViewDocument。但是,生成的资源(从 ViewDocument.resx)是根据 resx 文件所在的文件夹结构命名的,在本例中为 Production.folder1.folder2.ViewDocument.resources。

在 VS2008 中,您可以在 .resx 文件的设置中覆盖(默认)逻辑名称,托管资源/常规/资源逻辑名称。在 VS2010 中我无法让它工作 - 它完全忽略了这个设置!有没有其他方法可以解决这个问题?

最后的方法是删除当前文件夹结构并将所有文件移动到根项目文件夹,但在我的情况下这似乎是相当多的工作。

有什么建议吗?

最佳答案

我已经找到了我自己问题的答案!

VS2010 中发生了一些让我感到困惑的事情。首先,在 VS2008 中,.resource 文件的名称受项目设置“资源逻辑名称”的影响,在 VS2010 中,文件始终根据项目的根命名空间和文件夹结构(扩展命名空间)命名。其次,在迁移时,这些设置被清空了,可能是因为我们使用了一个宏 $(InputFile) 已被 %(Filename) 替换。

为了解决这个问题,我在项目级别(或者您可以使用项目属性页)将“资源逻辑名称”定义为 $(RootNamespace).%(Filename).resources。请注意, .resource 文件仍然获得扩展名称(由它们所在的文件夹定义)。但是,如果您检查 MSBuild 中的日志文件,您会发现除了资源文件名之外,逻辑名称还出现在指向链接器的/ASSEMBLYRESOURCE 开关中!重建后,ComponentResourceManager 现在将使用 View 的类型在 'InitializeComponent' 中找到资源,在本例中为 Rootnamespace.filename。另请注意,这假设您的 View 类放置在与类同名的文件中!

关于visual-studio-2010 - 如何在 Visual Studio 2010 中设置资源逻辑名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12389470/

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