我正在使用TeamCity运行MSBuild脚本来清理和重建我们的解决方案之一。当我部署由此过程构建的dll时,Web服务器返回有关[MyType] .XmlSerializer.dll的错误,“此程序集由比当前加载的运行时更新的运行时构建,无法加载。”这是我到目前为止的笔记:
据我所知,我的选择是:
我错过了什么吗?我错过了还有其他选择吗?
答案 0 :(得分:4)
尝试将名为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位版本执行此操作。如果您有任何问题,请添加评论。
答案 1 :(得分:1)
Windows SDK出现了令人不快的安装程序问题。检查this answer以获取正确的注册表项。
答案 2 :(得分:0)
在我的机器上,我发现正确的版本被称为 C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ bin \ sgen.exe ,但目标DLL不正确
我相信原因是由于我的sgen.exe.config,删除以下行有助于解决我的问题。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>