SGEN:试图用不正确的格式加载程序集(SGEN: An attempt was made to l

2019-07-03 19:56发布

我有一个可以建立我的本地机器上正常,但是,当我得到TFS建立它的一个项目,我收到以下错误 -

SGEN:试图用不正确的格式加载程序集:

通过许多其他职位在这里阅读本主题后,大多数人只是说我需要生成类型更改为x86或任何CPU,而不是64位,但在尝试了无数的组合后,这也不是办法。 我的程序也是一个窗口服务,所以设置的应用程序池,让32个应用程序(由其他人的建议),也解决不了问题。

Answer 1:

-我的问题终于通过此页面解决http://aplocher.wordpress.com/2012/10/12/sgen-an-attempt-was-made-to-load-an-assembly-with-an-incorrect-format -tfs-2010 /

万一那个页面永远消失在未来,这里涉及的步骤 -

  1. 在团队资源管理器中,右键单击您的生成定义,然后选择打开进程文件位置
  2. 在XAML文件双击所选
  3. 在设计中,选择容器调用序列(这是顶层容器周围一切都会)。
  4. 在参数列表(通常在底部),MSBuildPlatform从Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto更改为Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.X86。
  5. 保存并关闭文件。
  6. 检查文件回至TFS并再次尝试您的构建。


Answer 2:

安装最新的后问题消失的Windows SDK ,其中包括sgen.exe的64位版本:

http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx

有时(如果一个不利于)旧版本的帮助:

http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx

出于某种原因,SGEN的64位版本不包含在微软构建工具



Answer 3:

我遇到了同样的错误,当我试图编译我的项目(平台目标设置为86)的发行。 它在调试编译罚款。 我才来的,在发行,生成序列化组件运行; 因此,在调用SGEN效用。 问题是,所谓的MSBuild的SGEN x64版本对我的x86 EXE,其产生的误差。 我只好让MSBuild的使用SGEN的正确版本通过这个参数的MSBuild:

/p:SGenToolPath="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools"


Answer 4:

我发现这个问题相关: https://github.com/dotnet/sdk/issues/1630

在等待这是固定在未来的版本中,我能够通过添加两个目标,以文件的csproj通过的建议来解决问题https://github.com/joperezr :

<Target Name="RemoveDesignTimeFacadesBeforeSGen" BeforeTargets="GenerateSerializationAssemblies">
    <ItemGroup>
    <ReferencePath Remove="@(_DesignTimeFacadeAssemblies_Names->'%(OriginalIdentity)')" />
    </ItemGroup>
    <Message Importance="normal" Text="Removing DesignTimeFacades from ReferencePath before running SGen." />
</Target>

<Target Name="ReAddDesignTimeFacadesBeforeSGen" AfterTargets="GenerateSerializationAssemblies">
    <ItemGroup>
    <ReferencePath Include="@(_DesignTimeFacadeAssemblies_Names->'%(OriginalIdentity)')" />
    </ItemGroup>
    <Message Importance="normal" Text="Adding back DesignTimeFacades from ReferencePath now that SGen has run." />
</Target>


Answer 5:

在我而言,这个错误不是的在x86 / x64设置无效的组合,但由于试图建立一个项目,针对特定的.NET framework版本(V4.5.1),其参考组件没有被安装在构建服务器是由于。

以下两个条件的组合是负责的错误:

  1. 在Visual Studio中,项目属性页面上,应用程序选项卡上,“目标框架”设置为” .NET框架4.5.1" ;
  2. 在构建服务器,文件夹C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework ,一个名为V4.5.1文件夹存在。 (带版本号,其中包括V3.5,V4.0,V4.5和其他文件夹, 出席了会议。)

此修复程序是安装的Windows 8.1的Windows软件开发工具包(SDK)的生成服务器上。 在安装向导中,在“选择要安装的功能”的步骤,我未选中所有复选框除一个用于“.NET框架4.5.1软件开发工具包”。

该安装造成失踪的V4.5.1文件夹中的参考大会\微软\ Framework.NETFramework文件夹运行被创建,并构建成功运行。



Answer 6:

我今天遇到了同样的问题。 一期工程将不能建立在我的电脑上,但建立在其他PC的优良

我终于固定它通过执行以下操作:

右键单击出错的项目,进入属性

选择Build选项卡并到这是最后的选择“生成序列化程序集”我设置为关闭,该项目现在建立的罚款。



Answer 7:

我有同样的问题,并观看输出屏幕给了我更多的细节。 从我发现了目标框架高于被允许对这种类型的项目(我是建设一个SQL Server CLR项目)。 该项目的目标框架设置为4.0。 改变这一回3.5固定我的问题。

戴夫



Answer 8:

我升级项目从4.0到4.5.2,并安装在构建服务器上的Microsoft .NET Framework 4.5.2开发包。 之后,它的工作。 你必须对所有其他.NET版本开发包。

https://support.microsoft.com/en-us/help/2901951/the-microsoft--net-framework-4-5-2-developer-pack-for-windows-server-2



Answer 9:

我有一个类似的问题,在命令行中VS或MSBuild的构建时,看到SGEN“格式不正确”的错误。 我的项目是64位,但MSBuild的坚持使用该工具的32位版本。 (我的一些同行解决此通过建设VS 2015年,但只安装了VS 2017年我已经和想保持这种方式。)

望着诊断生成输出,它看起来像SGEN从它的SdkToolsPath参数指定的目录下运行(对我来说: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ )。 这是从TargetFrameworkSDKToolsDirectory分配。 综观目标文件,这个来自SDK40ToolsPath。 这是从的MSBuild的config文件设置。

我解决了这个编辑C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe.config (需要管理员权限),设置SDK40ToolsPath财产使用

<property name="SDK40ToolsPath" value="$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\4.6.2\WinSDK-NetFx40Tools-x64', 'InstallationFolder', null, RegistryView.Registry32))" />

(注:如果你正在寻找一个64位操作系统注册表的这条路,去HKLM \ SOFTWARE \ WOW6432Node \微软...)

主要的变化是,当然,86到x64使用64位工具。 我也改变了框架,是我们用什么(4.6.2)。 这可能意味着我们能够可靠地只用工具对64位项目和这个框架,有了这个变化。 不过,我希望这可以帮助别人运行到这个问题。 (我感到震惊和沮丧的MSBuild不会自动改变基础框架和架构的工具路径。)



Answer 10:

就我而言,该解决方案在调试正确编译,但在只有一个项目一个发布错误。

使用这种https://social.msdn.microsoft.com/Forums/en-US/13d3cc7a-88dc-476c-8a15-fa2d4c59e5aa/sgen-an-attempt-was-made-to-load-an-assembly-with-一,不正确格式?论坛= netfx64bit ,我改变了项目PlatformTarget谁是与所有 的x86 CPU的问题。

我保持着混合平台的解决方案,并有可能在发布编译



文章来源: SGEN: An attempt was made to load an assembly with an incorrect format