Ошибка SGEN о сборке с некорректным форматом на VSTS

У меня есть решение со следующей (упрощенной) структурой:

Application.sln
|- Business.csproj
|- DAL.vbproj

Оба проекта нацелены на .NET Framework 4.5.2. Он строится как локально, так и в VSTS.

Я добавил ссылку на пакет NuGet в проект DAL в dll .NET Standard 1.1. Он по-прежнему отлично работает на моем локальном компьютере, но уже не на VSTS. Я получаю следующую ошибку:

SGEN : error : An attempt was made to load an assembly with an incorrect format: C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.runtime.interopservices.runtimeinformation\4.3.0\ref\netstandard1.1\System.Runtime.InteropServices.RuntimeInformation.dll. [E:\VstsAgents\2\_work\16\s\Src\Business\Business.csproj]

Обратите внимание, как VSTS жалуется на Business.csproj вместо DAL.vbproj. Хотя Business действительно ссылается на DAL.

Я читал о том, что SGEN не поддерживается для .NET Standard 1.1, но если для параметра создания сборки сериализации установлено значение Auto, он должен работать. Во всех моих проектах он установлен на Авто.

Я также читал о том, как вам следует изменить определение сборки, но

  • это не в моих силах изменить определение сборки
  • У меня нет локальной ошибки при использовании той же конфигурации (версия, любой процессор)

Стоит ли мне изучить .NET Core Xml Serializer Generator? В идеале я хотел бы просто пропускать сборку SGEN для моего пакета NuGet.

Обновить

Установка для параметра system.debug значения true дает нам больше информации. У нас есть сообщение об ошибке: cannot load a reference assembly for execution. Мы также смогли воспроизвести его локально. На моей машине был установлен .NET 4.7.1 SDK и пакет таргетинга, а на другом локальном компьютере - нет. Установка, которая исправила это. Сейчас мы изучаем возможность его установки на машины сборки (по-видимому, VSTS был настроен для использования локальных агентов).

Я считаю, что это соответствующие строки журнала:

2018-02-14T10:03:33.4980817Z ##[error]SGEN(0,0): Error : An attempt was made to load an assembly with an incorrect format: C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.runtime.interopservices.runtimeinformation\4.3.0\ref\netstandard1.1\System.Runtime.InteropServices.RuntimeInformation.dll.
2018-02-14T10:03:33.4980817Z ##[debug]Processed: ##vso[task.logissue type=Error;sourcepath=SGEN;linenumber=0;columnnumber=0;code=;]An attempt was made to load an assembly with an incorrect format: C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.runtime.interopservices.runtimeinformation\4.3.0\ref\netstandard1.1\System.Runtime.InteropServices.RuntimeInformation.dll.
2018-02-14T10:03:33.4980817Z    108>SGEN : error : An attempt was made to load an assembly with an incorrect format: C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.runtime.interopservices.runtimeinformation\4.3.0\ref\netstandard1.1\System.Runtime.InteropServices.RuntimeInformation.dll. [E:\VstsAgents\2\_work\16\s\Src\Business\Business.csproj]
2018-02-14T10:03:33.4980817Z            - Could not load file or assembly 'file:///C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.runtime.interopservices.runtimeinformation\4.3.0\ref\netstandard1.1\System.Runtime.InteropServices.RuntimeInformation.dll' or one of its dependencies. Reference assemblies should not be loaded for execution.  They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)
2018-02-14T10:03:33.4980817Z            - Cannot load a reference assembly for execution.

```


person Peter    schedule 12.02.2018    source источник
comment
Какой пакет вы добавили в проект DAL? Можете ли вы воспроизвести эту проблему с новым решением и проектами? Можете ли вы поделиться подробным журналом в OneDrive (установите для system.debug значение true, затем создайте очередь и поделитесь журналом)?   -  person starian chen-MSFT    schedule 13.02.2018
comment
@ starianchen-MSFT Мы добавили специальный пакет (netstandard11) в проект DAL. Я добавил некоторую информацию в журнал отладки в обновлении вопроса. Я не уверен, что мне разрешено делиться всем журналом.   -  person Peter    schedule 14.02.2018
comment
Каков результат после установки .NET 4.7.1 на машине с агентом сборки?   -  person starian chen-MSFT    schedule 15.02.2018
comment
Мы установили SDK и целевой пакет через установщик Visual Studio, но это не помогло. Что странно, потому что это помогло на одной локальной машине. Я посмотрю сегодня, сможем ли мы воспроизвести снова на другом компьютере или при удалении SDK / package. Так что мы можем быть более уверены в том, что проблема именно в этом.   -  person Peter    schedule 15.02.2018
comment
Попробуйте собрать проект вручную на машине с агентом сборки и проверьте результат.   -  person starian chen-MSFT    schedule 15.02.2018
comment
К сожалению, такое же сообщение о проблеме / ошибке. Мы также попробовали обновить Visual Studio на агенте сборки (15.5.6), без разницы.   -  person Peter    schedule 15.02.2018
comment
Попробуйте удалить VS, затем переустановите и проверьте результат.   -  person starian chen-MSFT    schedule 15.02.2018
comment
Похоже, .NET 4.7.1 не был установлен правильно (или в команде было какое-то недопонимание). Кажется, что установка 4.7.1 решила проблему, но мы все еще изучаем, чтобы быть уверенным (так как сборка теперь не работает по чему-то другому, но это может иметь другие причины).   -  person Peter    schedule 15.02.2018


Ответы (1)


Судя по всему, установка .NET 4.7.1 на агент сборки исправила это за нас.

person Peter    schedule 20.02.2018