2012-02-13 68 views
0

我在网络上发现了一个.NET 4.0的免费程序,但必须复制代码才能编译VS2008。我正在考虑文化在.NET版本中的处理方式。 我得到这个错误:.NET 4.0到3.0找不到适用于指定文化或中性文化的任何资源

System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "A.B.C.Resources.ExceptionMessage.resources" was correctly embedded or linked into assembly "A.B.C.csproj" at compile time, or that all the satellite assemblies required are loadable and fully signed.

这是一个C#.dll文件(类库),而我从一个控制台程序调用它。 它有一个强键文件分配给它。

它炸毁任何声明如下:

return ResourceManager.GetString("XYZ"); 

它看起来像所有的资源都是英文的,这就是我唯一需要的语言。 我只是在寻找如何避免异常。

+0

您是否也复制了原始项目的资源? – svick 2012-02-13 15:54:40

+0

这听起来像项目解决方案不完整。这与.NET 4.0/3.0无关,因为你的结论是错误的,ResourceManager类没有改变。即使它确实......它仍然会得到支持。 – 2012-02-13 15:58:20

+0

是的,我复制了资源文件,并刚刚同步了AssemblyInfo.cs文件。关于什么可能不完整的提示? – NealWalters 2012-02-13 17:01:28

回答

2

当我复制文件并重建新的VS2008项目时,Visual Studio解决方案资源管理器中没有关于资源文件的层次关系。例如,ExceptionMessage.resx和ExceptionMessage.Designer.cs处于同一级别;而通常,Designer.cs文件在.resx文件下缩进。我不确定发生了什么。

所以我做的是创建一个新的.resx文件,并仔细复制使用记事本和文件合并程序,.resx文件和.cs文件的部分。然后它运行良好。

我还不是很确定问题是什么,但我知道这个问题已经解决了。今天在这个问题上失去了大约5个小时。

0

从版本4和版本3解决方案中比较组件中的[assembly: AssemblyCulture("")]属性可能是值得的。

默认是 - 我认为 - 没有。

MSDN documentation

Putting this attribute on an assembly and using something other than the empty string ("") for the culture name will make this assembly look like a satellite assembly, [...]

也许你需要明确定义,或它已经被定义,但不应该是什么?

+0

4.0和我的版本都没有文化。在您发布的MDSN页面中,看起来像只有在AssemblyCulture只有一个资源并且没有可执行代码的情况下才使用AssemblyCulture。我的身边仍然没有运气。 – NealWalters 2012-02-13 16:59:59

0

我遇到过这个困难,发现原因与项目属性中的程序集名称和默认名称空间有关。它有助于将它们设置为相同的,或者这种效果。

相关问题