Asp.net 网络部署项目&;团队城市
我正在尝试为解决方案构建一个WebDeploymentProject2010项目。我已在生成服务器上安装了Windows SDK和Web部署项目2010 RTW,并复制了MSBuild缺少的Asp.net 网络部署项目&;团队城市,asp.net,msbuild,teamcity,web-deployment-project,Asp.net,Msbuild,Teamcity,Web Deployment Project,我正在尝试为解决方案构建一个WebDeploymentProject2010项目。我已在生成服务器上安装了Windows SDK和Web部署项目2010 RTW,并复制了MSBuild缺少的.target文件 当试图构建项目时,它会抛出以下错误 C:\Program Files\MSBuild\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.targets(1589,9):错误MSB6004:指定的任务可执行文件位置“C:\Progra
.target
文件
当试图构建项目时,它会抛出以下错误
C:\Program Files\MSBuild\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.targets(1589,9):错误MSB6004:指定的任务可执行文件位置“C:\Program Files\MSBuild\Microsoft\WebDeployment\v10.0\aspnet\u merge.exe”无效
不幸的是,在谷歌搜索关于这个错误的结果并没有揭示出任何有价值的东西。如果您能帮助TeamCity成功构建web部署项目,我们将不胜感激。好的,您的aspnet\u合并被指向了错误的位置-在我的构建脚本中,我有一些结果如下:
<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>
请尝试更改文件“Microsoft.WebDeployment.targets”第1562行的以下节点:
更合适的解决方案应该是在.wdproj文件中设置targetFrameworkDKDirectorybin
属性。例如:
<TargetFrameworkSDKDirectoryBin>C:\Programmi\Microsoft SDKs\Windows\v7.1\Bin\</TargetFrameworkSDKDirectoryBin>
C:\Programmi\Microsoft SDK\Windows\v7.1\Bin\
在.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>
aspnet_merge.exe
$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0
$(TargetFrameworkDKDirectoryBin)
第二个AspnetMergePath
表示,如果在其他地方存在指向现有aspnet_merge.exe文件的$(targetFrameworkDKDirectorybin)
,则将使用该文件。Cool,我在Microsoft.WebDeployment.targets
的NETFX 4.0 Tools
目录中为aspnet\u merge.exe
设置了ExePath
,它现在正在正确构建。感谢+1,因为其他答案假设aspnet_merge.exe在开发人员机器和生成服务器上位于同一位置。这解决了问题,但请注意,最新的SDK是7.1,而不是7.0A。
<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>