Вопрос по asp.net-mvc, msbuild, visual-studio, aspnet-compiler, visual-studio-2013 – Visual Studio 2013 вызывает 32-битный aspnet_compiler вместо 64-битного

9

Мое решение содержит несколько проектов .net, и одним из них является проект ASP.NET MVC, который яЯ пытаюсь опубликовать. Все конфигурации установлены правильно, x32 и x64, ни одна из них не установлена на AnyCPU.

Проблема:

Если я пытаюсь опубликовать проект как 32-битный, все в порядке, но попытка опубликовать в 64-битном режиме не удается с ошибкой:

Could not load file or assembly "ProjectA" or one of its dependencies. 
An attempt was made to load a program with an incorrect format.

Что я'попробовал и заметил:

Начиная с VS 2013, MSbuild является частью VS, а не .NET Framework, как раньше. Если я просто создаю решение в режиме x64, 32-разрядная версия msbuild"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe" запускается первым и запускает 64-битную сборку"C:\Program Files (x86)\MSBuild\12.0\Bin\amd64\MSBuild.exe" Так что нормальная сборка без публикации работает просто отлично.

Но если я выберуpublishсначала запускается 32-битная MSbuild, а затем запускается 32-битный aspnet_compilerc:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe а НЕ 64-битный, который вызывает ошибку, о которой я упоминал выше.

Единственный обходной путь, который янашел до сих пор, чтобы заменить

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe"

с 64 битным

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe"

Вопрос:

Есть ли лучшее (юридическое) решение для моей проблемы? Это похоже на ошибку в VS

@ovm да, я очень люблю такие шутки :). Не стесняйтесь высказать это здесь и особенно здесьconnect.microsoft.com/VisualStudio/feedback/details/808519/... VladL
@ jessehouwing спасибо за вашу идеюconnect.microsoft.com/VisualStudio/feedback/details/808519/... VladL
Это шутка, верно? Весь переход от VS 2010 -> 2012 -> 2013 год доставляет мне такие головные боли, и я все еще изо всех сил пытаюсь заставить все мои веб-формы asp.net и проект MVC правильно построить, запустить и развернуть. Вдобавок ко всему, ужасная поддержка Sql Data Tool для 2013 года. Куда идет MS? Ole Viaud-Murat
Подайте ошибку при подключении:connect.microsoft.com/VisualStudio jessehouwing

Ваш Ответ

3   ответа
1

Добавьте эту строку в файл .pubxml (Tree Solution \ Project \ Properties \ PublishProfiles \ .pubxml) в узле PropertyGroup для конфигурации публикации. Например:

<pre><code> $(windir)\Microsoft.NET\Framework64\v4.0.30319 FileSystem Debug Any CPU True False C:\Pub\FTS_Service True True True False DonotMerge </code></pre>

8

Добавьте эту строку в файл .csproj внутриPropertyGroup узел для конфигурации сборки, на которую вы нацелены (или используйтеProperyGroup это неt цель для всех режимов выпуска).

$(windir)\Microsoft.NET\Framework64\v4.0.30319

Затем 64-битная версия используется компилятором. Для меня узел, к которому я добавил эту строку, был, как показано ниже:


   $(windir)\Microsoft.NET\Framework64\v4.0.30319

Tks! Работает для меня Lorenzo Solano
Спасибо, мы должны были написать наши собственные пакеты сборки, попробуем это позже с новым проектом, если только microsost это не исправит. VladL
1

У меня точно такая же проблема.

Вы можете создать BAT-файлы для замены EXE перед началом публикации. Или вы можете написать BAT, который напрямую вызывает aspnet_compiler.exe и выполняет публикацию без пользовательского интерфейса :-)

Похожие вопросы