Какие шаги я должен предпринять для создания и запуска. net базового приложения веб-API в 32-разрядной среде / среде выполнения? - PullRequest
0 голосов
/ 26 мая 2020

Мы разработали приложение веб-API. NET Core с использованием следующих технологий:

- NET Core (3.1)

-Visual Studio 2019

К сожалению, мы должны развернуть указанное приложение в следующей среде:

-32-битная среда

- Windows Server 2008 R2 Enterprise (Service Pack 1)

- Версия IIS 7.5

-8 ГБ ОЗУ

Поэтому в моей Visual Studio 2019 я открыл приложение и выполнил следующие шаги:

Force x86 в VS go перейдите в Свойства> Сборка и измените целевую платформу с Любого ЦП на x86

Создал Directory.Build.targets в каталоге. NET Core приложения Project root:

<Project>

      <PropertyGroup

      Condition="'$(OS)' == 'Windows_NT' and

                 '$(PlatformTarget)' == 'x86' and

                 '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and

                 '$(SelfContained)' != 'true'"

                  >

       <RunCommand>$(MSBuildProgramFiles32)\dotnet\dotnet</RunCommand>

      </PropertyGroup>

< /Project >

Из командной строки разработчика Visual Studio 2019 v16.4.6 я перешел в каталог. NET Core приложения root.

Я запустил :

>>

dotnet clean
...........................
.............

dotnet build


C:\Program
Files\dotnet\sdk\3.1.101\Microsoft.Common.CurrentVersion.targets(2726,5):
error MSB4216: Could not run the "ResolveComReference" task because
MSBuild could not create or connect to a task host with runtime "CLR4"
and architecture "x86".  Please ensure that (1) the requested runtime
and/or architecture are available on the machine, and (2) that the
required executable "C:\Program Files\dotnet\sdk\3.1.101\MSBuild.exe"
exists and can be run.
[D:\ blah blah.csproj]
    6 Warning(s)
    1 Error(s)

Time Elapsed 00:00:04.63'

Подскажите, пожалуйста, как Могу я собрать и запустить это приложение в 32-битной среде?

Ответы [ 2 ]

1 голос
/ 28 мая 2020

@ akseli @omajid @ perry-qian-msft @ yongqing-yu Извините, это не сработало, нам пришлось отказаться от использования. NET Core технологии (и пришлось перейти на. NET Framework 4.7.2), потому что некоторое время он будет работать правильно, а затем выдаст нам ошибку 500, а затем ошибку 401. Я думаю, что это как-то связано с конфигурацией, потому что мы используем:

- NET Core (3.1)

-In-Process на сервере IIS

поэтому внутри автономного сервера IIS нам не нужно запускать. NET Приложение Core (3.1) в собственном пуле приложений как «Неуправляемый код», потому что оно все находится в процессе, и NET Core (3.1) может работать в IIS. В любом случае у нас нет времени решать эту проблему, поэтому мы переходим на. NET Framework 4.7.2

@ akseli @omajid @ perry-qian-msft @ yongqing-yu Все Спасибо за все ваши отзывы. Мой технический руководитель группы нашел решение, указав в параметрах сборки приложения. NET Core Web API значение «Any CPU» в Visual Studio 2019. (В Visual Studio 2019 щелкните правой кнопкой мыши. NET Core Web API Application и затем выберите свойства в раскрывающемся контекстном меню, а затем, когда появится панель окна, выберите вкладку «Сборка».) enter image description here

Кроме того, на сервере IIS Мой технический руководитель группы убедился, что это развернуто. NET В пуле приложений основного веб-API были следующие настройки (важно помнить, что это «Неуправляемый код»: enter image description here

1 голос
/ 27 мая 2020

Какие шаги я должен предпринять для сборки и запуска. net базовое приложение веб-API в 32-битной среде / среде выполнения?

Это довольно странно. Сначала , как сказали akseli и omajid , попробуйте установить Net Core 3.1 x86 sdk version .

Затем попробуйте следующие шаги:

Шаги

1) изменить целевую платформу сборки на x86 в 32 -bit environment.

2) при переносе проекта в 32-разрядную среду удалите .vs скрытую папку, которая существует в папке решения, bin, obj папка.

3) открыть Командная строка разработчика для VS2019 в 32-битной среде (она вызывает msbuild.exe в C:\Program Files\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe ) для сборки вашего проекта.

4) попробуйте использовать msbuild вместо dotnet build, поскольку MSBuild более мощный и имеет более широкий диапазон компиляций.

msbuild xxx.csproj -t:build

msbuild xxx.csproj -t:clean

4) или добавьте этот узел в свой xxx.csproj файл, а затем соберите свой проект

<PropertyGroup Condition="'$(MSBuildRuntimeType)' == 'Core'">
  <GenerateResourceMSBuildArchitecture>CurrentArchitecture</GenerateResourceMSBuildArchitecture>
  <GenerateResourceMSBuildRuntime>CurrentRuntime</GenerateResourceMSBuildRuntime>
</PropertyGroup>

Ожидается любая обратная связь.

...