У нас есть новый сервер Windows 2012, который я использую в качестве нашего сервера сборки Jenkins. Мое приложение успешно работает с .NET framework 4.5, но когда мы обновили до .NET 4.6, сборки перестали работать.Обновление до .NET Framework 4.6, не основанного на Windows 2012 Jenkins server
Глядя вниз журнал я вижу эту ошибку:
RateCalculator.cs(49,13): error CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
не имеет Web.config в моем приложении, только файл Application.config. Я попытался добавить это:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Однако это не помогло устранить ошибку.
Мы проверили, что .NET framework 4.6 установлен правильно, как путем проверки обновлений Windows, так и в реестре.
В моей локальной среде разработки он корректно скомпилирован с моей компиляцией на Visual Studio 2015, запущенной в Windows 7. На сервере сборки Jenkins есть Visual Studio 2012 на сервере Windows 2012, и именно там появляются ошибки.
Это является грубым решением, но почему бы не устанавливать бесплатную версию VS 2015 на сервере сборки? – Erwin
Ваш сервер сборки не знает, что фаз около 4.6, у него нет установленного пакета таргетинга. Ничего не знает о C# v6. Не обновлять сервер сборки вместе с версией VS, которую разработчики используют, это, конечно, ошибка. –
Да, Ханс, вы правы - сервер сборки не знал о 4.6 – ShaunP