Проект веб-развертывания и TeamCity - PullRequest
7 голосов
/ 07 июля 2011

Я пытаюсь создать проект проекта веб-развертывания 2010 для решения. Я установил Windows SDK и Web Deployment Project 2010 RTW на сервер сборки, а также скопировал недостающие файлы .target для MSBuild.

При попытке построить проект выдает следующую ошибку

C: \ Program Files \ MSBuild \ Microsoft \ WebDeployment \ v10.0 \ Microsoft.WebDeployment.targets (1589, 9): ошибка MSB6004: указанное расположение исполняемого файла задачи "C: \ Program Files \ MSBuild \ Microsoft \ WebDeployment \ v10.0 \ aspnet_merge.exe "недействителен.

К сожалению, поиск в Google результатов по этой ошибке не показывает ничего особенного. Буду признателен за любую помощь в успешной разработке TeamCity проекта веб-развертывания.

Ответы [ 3 ]

4 голосов
/ 08 июля 2011

хорошо, ваш aspnet_merge указывает на неправильное место - в моем скрипте сборки у меня есть что-то, что заканчивается следующим образом:

<ItemGroup>
    <ASPNETPath Include="F:\Program Files\Microsoft SDKs\Windows\v6.0A\bin" />
</ItemGroup>

<Target Name="ASPNET Merge">
    <AspNetMerge
      ExePath="@(ASPNETPath)"
      ApplicationPath=".\Release"
      SingleAssemblyName="CoreMicrosite"
      />
</Target>

попробуйте и посмотрите

3 голосов
/ 07 сентября 2012

Более подходящим решением должно быть установить свойство TargetFrameworkSDKDirectoryBin в вашем файле .wdproj. Например:

<TargetFrameworkSDKDirectoryBin>C:\Programmi\Microsoft SDKs\Windows\v7.1\Bin\</TargetFrameworkSDKDirectoryBin>

эта настройка, используемая в файле .dtproj, переопределяет настройку по умолчанию, определенную в Microsoft.WebDeployment.targets, как вы можете видеть здесь

<Target
  Name="GetAspNetMergePath"
  DependsOnTargets="$(GetAspNetMergePathDependsOn)">
  <PropertyGroup>
      <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
      <AspnetMergePath>$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0</AspnetMergePath>
      <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKDirectoryBin)$(AspnetMergeName)')">$(TargetFrameworkSDKDirectoryBin)</AspnetMergePath>
  </PropertyGroup>
</Target>

второй AspnetMergePath означает, что если где-то еще существует $(TargetFrameworkSDKDirectoryBin), указывающий на существующий файл aspnet_merge.exe, он будет использован.

2 голосов
/ 18 апреля 2012

Измените следующий узел в строке 1562 в файле «Microsoft.WebDeployment.targets»:

    <Target
        Name="GetAspNetMergePath"
        DependsOnTargets="$(GetAspNetMergePathDependsOn)">
        <PropertyGroup>
            <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
            <!-- OLD
            <AspnetMergePath>$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0</AspnetMergePath>
            <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKDirectoryBin)$(AspnetMergeName)')">$(TargetFrameworkSDKDirectoryBin)</AspnetMergePath>
            -->
            <AspnetMergePath>C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\</AspnetMergePath>
            <AspnetMergePath Condition=" '$(TargetFrameworkVersion)' == 'v4.0' ">C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\</AspnetMergePath>
        </PropertyGroup>
    </Target>

Я добавил обходной комментарий на соответствующей странице Microsoft Connect:http://connect.microsoft.com/VisualStudio/feedback/details/706047/visual-studio-2010-web-deployment

...