首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建资源专用DLL (使用al.exe)正在引发“程序集是由比当前加载的运行时更新的运行时生成的”

构建资源专用DLL (使用al.exe)正在引发“程序集是由比当前加载的运行时更新的运行时生成的”
EN

Stack Overflow用户
提问于 2015-06-09 10:25:43
回答 1查看 471关注 0票数 0

我正在打包资源;我正在使用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环境中加载吗?这些是构建后命令:

代码语言:javascript
复制
ResGen.exe AdResources.resx AdResources.resources
al.exe /target:lib /embed:AdResources.resources /culture:en /out:AdResources.resources.dll

用于加载程序集和资源的.cs代码如下所示:

代码语言:javascript
复制
string path = Path.Combine(InstallDir, "AdResources.resources.dll");
Assembly resAssembly = Assembly.LoadFrom(path);
ResourceManager temp = new ResourceManager("AdResources", resAssembly);

..。在IDE中运行(目标为3.5)时工作,但在最终主机平台中失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-09 18:45:03

我已经解决了这个问题。

尽管汉斯的评论,我解决了它使用IDE (Community2015RC)。

我创建了一个新的类库项目。将目标设置为.NET 3.5 --并确保App.config说同样的话。然后,我将我的.resx文件(仅)从我的主要项目复制到这个项目中。我删除了自定义工具(生成强名称)。而且IDE构建的输出将在我的主机环境中加载得很好!

所以,非常奇怪的是,我可以使用IDE,但不能使用工具,即使我直接使用3.5或2.0工具;并且验证输出清单确实写着"//元数据版本: v2.0.50727"!

我创建了一个预构建脚本来从主项目复制resx文件,并创建了一个构建后脚本将这个库复制到我的目标输出文件夹中。工作很好..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30729410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档