我正在打包资源;我正在使用ResourceManager.CreateFileBasedResourceManager.成功地从.resource文件中加载它们。我想用资源创建dll文件,然后用Assembly.LoadFrom加载这些文件;然后用新的ResourceManager(string,Assembly)加载资源。当我这样做的时候,我得到的是:
“程序集由比当前加载的运行时更新的运行时生成”.
该项目是一个类库;它像“插件”一样分布并在“主机”中运行。主机正在运行.Net 3.5。我的VS项目被配置为目标3.5 ..。实际上,我正在手动运行al.exe来构建DLL。
我可以在我的项目中运行一个测试程序(也被设置为目标3.5),我的代码将加载程序集(并找到资源)。但是,当相同的代码在“主机”中运行时,我会得到错误。
我已经尝试了我能在我的机器上找到的每一个版本的al.exe;我特别下载了.NET 3.5SDK;它似乎安装在C:\Program \Microsoft\WindowsV7.0中,但是无论运行哪个版本的al.exe,我总是会得到错误。
有人能帮我构建DLL以便它在这个.NET 3.5环境中加载吗?这些是构建后命令:
ResGen.exe AdResources.resx AdResources.resources
al.exe /target:lib /embed:AdResources.resources /culture:en /out:AdResources.resources.dll用于加载程序集和资源的.cs代码如下所示:
string path = Path.Combine(InstallDir, "AdResources.resources.dll");
Assembly resAssembly = Assembly.LoadFrom(path);
ResourceManager temp = new ResourceManager("AdResources", resAssembly);..。在IDE中运行(目标为3.5)时工作,但在最终主机平台中失败。
发布于 2015-06-09 18:45:03
我已经解决了这个问题。
尽管汉斯的评论,我解决了它使用IDE (Community2015RC)。
我创建了一个新的类库项目。将目标设置为.NET 3.5 --并确保App.config说同样的话。然后,我将我的.resx文件(仅)从我的主要项目复制到这个项目中。我删除了自定义工具(生成强名称)。而且IDE构建的输出将在我的主机环境中加载得很好!
所以,非常奇怪的是,我可以使用IDE,但不能使用工具,即使我直接使用3.5或2.0工具;并且验证输出清单确实写着"//元数据版本: v2.0.50727"!
我创建了一个预构建脚本来从主项目复制resx文件,并创建了一个构建后脚本将这个库复制到我的目标输出文件夹中。工作很好..。
https://stackoverflow.com/questions/30729410
复制相似问题