ASP.NET MVC5 View Pre-Compilation работает, но aspnet_merge.exe выбран из неправильного места - PullRequest
0 голосов
/ 31 января 2019

Чтобы скомпилировать .net 4.7.1 ASP.NET MVC5, скрипт msbuild должен установить AspnetMergePath следующим образом:

 <AspnetMergePath>C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.1 Tools</AspnetMergePath>

Как вы можете видеть, он устанавливает AspnetMergePath в 4.7.1инструменты-реж.Однако на некоторых машинах при запуске сценария сборки:

<ItemGroup>
  <SolutionToBuild Include="$(_solutionFile)">
    <Properties>
      WebPublishMethod=$(WebPublishMethod);
      FilesToIncludeForPublish=OnlyFilesToRunTheApp;          
      SkipRestoringNugetPackages=true;

      LastUsedPlatform=$(Platform);
      LastUsedBuildConfiguration=$(Configuration);

      UseMerge=True;
      DebugSymbols=False;
      WDPMergeOption=MergeAllOutputsToASingleAssembly;
      ExcludeApp_Data=True;
      EnableUpdateable=False;
      SingleAssemblyName=AppViews;
      DeleteExistingFiles=True;
      LaunchSiteAfterPublish=False;
      PrecompileBeforePublish=True;
      DeleteAppCodeCompiledFiles=True;
      SiteUrlToLaunchAfterPublish=;

      Platform=$(Platform);
      PublishUrl=$(_tempPublishUrl);
      Configuration=$(Configuration);
      DeployOnBuild=$(DeployOnBuild);
      AspnetMergePath=$(AspnetMergePath);
      NugetServerKind=$(NugetServerKind);          
      DeployDefaultTarget=$(DeployDefaultTarget);
      DeleteExistingFiles=$(DeleteExistingFiles);
      NugetServerAccessMethod=$(NugetServerAccessMethod);
      LastUsedBuildConfiguration=$(Configuration);
      ExcludeGeneratedDebugSymbol=$(_excludeGeneratedDebugSymbol);
      CodeAnalysisRuleSetDirectories=$(CodeAnalysisRuleSetDirectories);
      $(ExtraProperties)
    </Properties>
  </SolutionToBuild>
</ItemGroup>

<MSBuild
    Projects="@(SolutionToBuild)"
    Targets="Clean;$(_targetRootProjectsInSolution)"
    BuildInParallel="$(BuildInParallel)"
/>

Сборка работает, но в журнале msbuild мы видим следующую команду, имеющую место на некоторых машинах:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\aspnet_merge.exe "C:\VS\..." -o AppViews -copyattrs "obj\rls@oracle\AssemblyInfo\AssemblyInfo.dll" -a -r 
Successfully merged 'C:\VS\...'

Как видите, файл aspnet_merge.exe извлекается из неправильного каталога (4.6.1 вместо 4.7.1).Команда работает, но тем не менее, почему разные машины ведут себя по-разному, если на них установлены одинаковые инструменты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...