Ответ 1
Вы пытались изменить Generate serialization assembly
на Off
, как предложено в этот пост msdn? В моем случае это был билет.
Просто перейдите в свойства проекта и в разделе "Build".
Я смог найти несколько похожих вопросов и ответить, но ни один из ответов или точных условий, применимых к моей ситуации.
Если я не ссылаюсь на mixed-mode DLL
, это отлично работает. Если я ссылаюсь на DLL смешанного режима, я получаю эту ошибку (xxx - это просто местозаполнитель):
SGEN: ошибка: была сделана попытка загрузить сборку с помощью неправильный формат: C:.\Код\ххх\ствол\ххх\Common\ххх\построить\winx64\Lib\xxx.dll
Это команда:
C:\Program Files\Microsoft SDK\Windows\v6.0A\bin\sgen.exe /assembly:C:\code\xxx\trunk\xxx\xxx\obj\x64\Release\xxx.dll /proxytypes/reference:..\common\xxx\build\winx64\lib\xxx.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Configuration.Install.dll /reference: "C:\Program Files (x86)\Reference Сборки \Microsoft\Framework\v3.5\System.Core.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll /reference:C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll /reference: "C:\Program Files (x86)\Reference Сборки \Microsoft\Framework\v3.0\System.Runtime.Serialization.dll" /reference: "C:\Program Files (x86)\Reference Сборки \Microsoft\Framework\v3.0\System.ServiceModel.dll" /reference: "C:\Program Files (x86)\Reference Сборки \Microsoft\Framework\v3.5\System.Web.Extensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.Services.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll
Любые идеи?
Вы пытались изменить Generate serialization assembly
на Off
, как предложено в этот пост msdn? В моем случае это был билет.
Просто перейдите в свойства проекта и в разделе "Build".
Эта ошибка также появляется на машине сборки после установки MSBuild Toolset (для Visual Studio 2013). Проблема в том, что по умолчанию доступна только 32-разрядная версия sgen.exe.
Проблема исчезает после установки последнего Windows SDK, который включает 64-разрядную версию sgen.exe:
http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx
На одном агенте (машине) мне также нужно было установить более старую версию:
http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx
При отключении сборки сериализации будет решена проблема, это просто обходной путь - в конце вы заплатите за это с более медленным временем запуска. Проблема в том, что вам нужно вызвать sgen.exe из x64 SDK (если вы настроите x64). Если вы используете msbuild, установите правильный путь к sgen следующим образом:
<MSBuild Projects="$(MSBuildProjectLocation)" Targets="Build"
Properties="....
SGenToolPath=C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\x64;"
/>
Это альтернатива от пользователя .
Мы только что внесли модификацию нашей конфигурации Release в файл проекта (csproj) и установили путь SDK к версии x64:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
...
...
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
<SDK40ToolsPath>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64</SDK40ToolsPath>
</PropertyGroup>