VS 2012 Опубликовать: Не удается найти действительный AspnetMergePath - программирование
Подтвердить что ты не робот

VS 2012 Опубликовать: Не удается найти действительный AspnetMergePath

Я только что установил Update 2 для Visual Studio 2012, в котором вводится новое диалоговое окно публикации. Я пытаюсь заставить его делать то, что он использовал (предварительно скомпилировать веб-сайт перед публикацией), и я столкнулся с ошибкой, что он

"Can't find the valid AspnetMergePath"

который выкинут из файла Microsoft.Web.Publishing.AspNetCompileMerge.targets. Я подтвердил, что файл aspnet_merge.exe существует в нескольких местах на моем компьютере, но

$(GetAspNetMergePath) 
По какой-то причине

оценивает пустую строку. Мне не хватает некоторых настроек конфигурации, но я никогда не сталкивался с ними раньше, поэтому я смущен, почему это начнется внезапно.

Может ли кто-нибудь предложить совет по устранению этого? Я выполнил стандартный поиск в Google по этой ошибке, и ничто не привело меня к правильному решению.

4b9b3361

Ответ 1

Я столкнулся с той же проблемой. Искал через все связанные с Майкрософт сайты, нашел много жалоб и никаких намерений от Microsoft, чтобы исправить это.

Вот как я работал в моей системе. Отредактируйте файл Microsoft.Web.Publishing.AspNetConfigurationMerge.targets и добавьте следующую строку. Убедитесь, что путь к Microsoft SDK на вашем компьютере одинаков, если не изменить его:

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory>

Вот как это должно выглядеть:

  <Target
  Name="GetAspNetMergePath"
  DependsOnTargets="$(GetAspNetMergePathDependsOn)"
  Condition ="'$(GetAspNetMergePath)' != 'false'">
<PropertyGroup>
  <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory>
  <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
  <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath>
</PropertyGroup>
<Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))"
       Text="Can't find the valid AspnetMergePath" />

Ответ 2

У меня была такая же проблема и при создании с использованием командной строки msbuild. Исправление заключается в использовании msbuild.exe в C:\Program Files (x86)\MSBuild\12.0\Bin
а не из C:\Windows\Microsoft.NET\Framework\v4.0.30319

Проблема связана с тем, что новая msbuild теперь часть visual studio 2013, а не .Net framework больше.

Ответ 3

Вот решение, которое не требует изменения файла целей. Обходной путь из http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepath предполагает передачу дополнительных свойств в msbuild. Я смог заставить его работать, используя это:

msbuild website.publishproj/p: DeployOnBuild = true/p: PublishProfile = Release/p:VisualStudioVersion = 12.0/p: AspnetMergePath = "C:\Program Files (x86)\Microsoft SDK\Windows\v8.1A\bin\NETFX 4.5.1 Инструменты \"

Ключевым здесь является свойство AspnetMergePath, которое может потребоваться изменить, если Windows SDK установлен в другом месте. Если я включаю свойство GetAspNetMergePath из обходного пути, это терпит неудачу, но это может потребоваться в зависимости от версии SDK.

Ответ 4

Другой вариант, который работал у меня с этой же ошибкой, заключался в установке Visual Studio (в моем случае Express). Я построил приложение один раз на сервере, а затем с этой точки вперед он построил правильно как часть моего проекта непрерывной интеграции.

Ответ 5

У меня была такая же проблема в VS 2012, и все, что я делал, было следующим:

Нажмите "Опубликовать", "Опубликовать в Интернете" перейдите на вкладку "Настройки", Снимите флажок "Прекомпиляция во время публикации".