.Net Standard 2.0 с .Net Framework 4.8 — не удалось загрузить файл или сборку System.Security.Principal.Windows, версия = 4.1.1.0

Я работаю над приложением ASP, написанным на .Net Framework 4.8, работающим в IIS на Windows Server 2012 R2. Я создал пакет NuGet, который представляет собой библиотеку .Net Standard 2.0, и все это успешно работает на моем локальном компьютере с помощью отладки Visual Studio.

Развернув его на сервере (заменив существующую папку bin новой, включая все новые файлы), я теперь получаю эту ошибку.

Could not load file or assembly 'System.Security.Principal.Windows, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Я использую самую последнюю версию MS Build Tools, последние обновления Windows, доступные для сервера, и приложение .Net Framework, и стандартная библиотека .Net используют версию 5 System.Security.Principal.Windows. , несмотря на то, что говорится в этом сообщении об ошибке.

Я убедился, что все функции Windows, связанные с IIS, включены на сервере так же, как и на моем компьютере для разработки. Я пересобрал и приложение, и библиотеку. Я полностью удалил и переустановил пакет System.Security.Principal.Windows NuGet из обоих. Я попытался установить это в файле csproj для приложения:

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType

Я тоже пытался установить это в csproj:

<PropertyGroup>
    <!--- ... -->
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <!--- ... -->
</PropertyGroup>  

Пока ничего не получилось. Я не понимаю, почему это вообще проблема, учитывая, что на моей локальной машине она работала безупречно.

Какие-либо предложения? Решения, данные для других подобных проблем в переполнении стека, у меня не сработали.


person jcreek    schedule 17.02.2021    source источник
comment
Используете ли вы packages.config для пакетов NuGet? Сначала вы должны преобразовать ссылки на пакеты в файлы проекта.   -  person Lex Li    schedule 17.02.2021
comment
Перезапустите пул приложений в IIS. и убедитесь, что в сборке используется правильный .NET Framework (64-битный или 32-битный).   -  person samwu    schedule 18.02.2021


Ответы (1)


Решением этой проблемы была установка пакета NuGet как в проекте приложения, так и в проекте библиотеки, в частности Microsoft.Net.Compilers, который служит для сборки проекта с использованием компиляторов C# и Visual Basic, содержащихся в пакете, в отличие от установленной версии. с MSBuild.

Хотя этот пакет в настоящее время устарел, это была правильная версия для использования, учитывая, что приложение работает с использованием .Net Framework, а не .Net Core 2.1+.

person jcreek    schedule 18.02.2021