Проект веб-развертывания и TeamCity
Я пытаюсь создать проект проекта веб-развертывания 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 ответа
Более подходящее решение должно быть установить 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, это будет использоваться.
Хорошо, ваш 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>
попробуй и посмотри
Измените следующий узел в строке 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