Подтвердить что ты не робот

MVC 5 - Предсессионные представления работают только из командной строки

У меня есть странная проблема, которую, надеюсь, кто-то может мне помочь. Я получил новый ноутбук, и я пытаюсь опубликовать тот же проект ASP.NET MVC 5 на новом компьютере с предварительно скомпилированными видами. Однако, когда я делаю публикацию с опцией "Предварительная компиляция во время публикации", она не создает предварительно скомпилированные представления. Теперь, если я скопирую точную команду, которую он выполнил, и запустил ее в командной строке, создаются предварительно скомпилированные представления.

Вот подробности. Обе машины имеют обновление для Windows 10 Anniversary Update (Version 1607) с обновлением Visual Studio 2013 5. Публикация приложения на старой машине с тем же профилем публикации генерирует предварительно скомпилированные представления. На новой машине публикация из диалогового окна "Публикация Web" выполняется без ошибок, но не создаются предварительно скомпилированные представления. Затем я скопировал эту точную команду в командную строку, которую VS использовал для предварительной компиляции:

C:\windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p C:\MyApp\obj\Release\AspnetCompileMerge\Source -c C:\MyApp\obj\Release\AspnetCompileMerge\TempBuildDir

Когда я запустил его, он создал предварительно скомпилированные представления в каталоге TempBuildDir\bin!

Единственное различие, которое я могу представить между машинами, - это обновления Windows.

Любые идеи? Спасибо.

4b9b3361

Ответ 1

Используете ли вы x64 verson для Windows?

Также вы можете попробовать установить $(AspnetCompilerPath) вручную:

msbuild.exe /p:AspnetCompilerPath="C:\windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe"

или добавьте его в свой проект:

<PropertyGroup>
  <AspnetCompilerPath Condition=" '$(AspnetCompilerPath)'=='' " >C:\windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe</AspnetCompilerPath>
</PropertyGroup>

Я сделал это предположение, потому что файл Microsoft.Web.Publishing.AspNetCompileMerge.targets содержит строку:

 We can't use the in-place aspnet_compiler because it will output to the aspnet temp folder which is only suiteable to run on the current machine.