2013-04-17 2 views
17

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

"Can't find the valid AspnetMergePath" 

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

$(GetAspNetMergePath) 

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

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

+0

Возможный дубликат ["Не удалось найти допустимый AspnetMergePath" в публикации для веб-разработчиков Visual?] (Http://stackoverflow.com/questions/12713714/cant-find-the-valid-aspnetmergepath-on-visual- web-developer-publish) –

ответ

18

У меня такая же проблема. Искал через все связанные с Майкрософт сайты, нашел много жалоб и никаких намерений от 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" /> 

+0

Спасибо, что помогли мне! Это сработало отлично. – adsilb

6

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

MSBuild website.publishproj/р: DeployOnBuild = истина/р: PublishProfile = Release /p:VisualStudioVersion=12.0/р: AspnetMergePath = "C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ Bin \ NETFX 4.5.1 Tools \»

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

17

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

вопрос вызванный тем, что новый msbuild теперь part of visual studio 2013, а не .Net framework.

+0

Ничего не сработало, но это! Знаете ли вы, как я мог установить его на VS 2012? – manishKungwani

+0

Да! Спасибо! Еще одна огромная точка из вашей ссылки: «Способ, которым MSBuild выбирает версии набора инструментов для сборки командной строки, теперь идентичен способу создания проектов Visual Studio». Я мог бы сэкономить дни отслеживания незначительных нюансов между ними, если бы это было сделано с самого начала. –

+0

Ошибка в этой же проблеме после того, как мы установили VS2013 на нашу компилирующую машину. У нас есть Дженкинс, который запускает компиляции msbuild и публикации в Интернете, и они внезапно перестали работать. Изменение Jenkins для использования VS2013 msbuild фиксированных вещей. –

0

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

0

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

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

Смежные вопросы