我正在使用TeamCity运行一个MSBuild脚本来清理和重建我们的解决方案之一。当我部署由此进程构建的dll时,web服务器将返回一个关于MyType.XmlSerializer.dll的错误,即“此程序集是由比当前加载的运行时更新的运行时生成的,不能加载”。到目前为止,我的笔记如下:
吗?
据我所知,我的选择是:
我是不是遗漏了什么?我还有别的选择吗?
发布于 2011-03-09 21:51:51
尝试将名为SGenToolPath的属性设置为要使用的SGen工具。
Microsoft.Common.targets文件调用SGen任务如下:
<SGen
BuildAssemblyName="$(TargetFileName)"
BuildAssemblyPath="$(IntermediateOutputPath)"
References="@(ReferencePath)"
ShouldGenerateSerializer="$(SGenShouldGenerateSerializer)"
UseProxyTypes="$(SGenUseProxyTypes)"
KeyContainer="$(KeyContainerName)"
KeyFile="$(KeyOriginatorFile)"
DelaySign="$(DelaySign)"
**ToolPath="$(SGenToolPath)"**
SdkToolsPath="$(TargetFrameworkSDKToolsDirectory)"
EnvironmentVariables="$(SGenEnvironment)"
SerializationAssembly="$(IntermediateOutputPath)$(_SGenDllName)"
Platform="$(SGenPlatformTarget)"
Types="$(SGenSerializationTypes)">
<Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly"/>
</SGen>我隐约记得在64位构建时必须这样做。如果您有任何问题,请添加注释。
发布于 2011-03-09 22:21:29
Windows有一个令人不快的历史安装程序问题。检查this answer以获得正确的注册表项。
发布于 2012-09-27 07:54:35
在我的机器上,我发现正确的版本被称为C:\Program (x86)\Microsoft DLL,但是目标DLL不正确。
我认为造成这种情况的原因是由于我的sgen.exe.config,删除以下行帮助解决了我的问题。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>https://stackoverflow.com/questions/5252340
复制相似问题