【发布时间】:2011-08-05 17:51:14
【问题描述】:
我正在尝试从 msbuild 为我的 Web 服务构建部署包,就像在 Visual Studio 中通过右键单击项目文件所做的那样。
包创建良好,并放在项目文件的源目录下的 /obj/Release/Packages 文件夹中。
您应该能够通过在项目文件内的 PropertyGroup 中设置 PackageLocation 属性来指定该包的创建位置。但是,这对我不起作用。它仍然将包放在源目录下的 /obj/Release/Packages 中。
这是我的项目文件中的 sn-p:
<Import Project="$(SrcTreeRoot)\Build\TaskInit.Tasks" />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="$(SrcTreeRoot)\Build\TaskOverrides.Tasks" />
<PropertyGroup>
<Platform>Any Cpu</Platform>
<Configuration>Dev</Configuration>
<PackageLocation>$(PackageOutputDir)\MatrixOnCdsService\MatrixOnCdsService.zip</PackageLocation>
<PackageAsSingleFile>True</PackageAsSingleFile>
<EnablePackageProcessLoggingAndAssert>True</EnablePackageProcessLoggingAndAssert>
<!--OutDir>$(PackageOutputDir)\MatrixOnCdsService\</OutDir-->
</PropertyGroup>
我们还使用了包含以下部分的 MasterBuild.proj:
<PackageProject Include="..\Source\AnalysisSuite\MatrixOnCdsService\MatrixOnCdsService.csproj"/>
...
<Target Name="Package">
<MSBuild Projects="@(PackageProject)" Targets="Package" Properties="Platform=$(Platform);
Configuration=$(Configuration);
DeployOnBuild=true;
DeployTarget=Package;
PackageLocation=$(PackageLocation);"/>
</Target>
TaskInit.tasks 是我们自己的自定义导入文件,其中包含 PackageOutputDir 属性,我们使用它来告诉项目将包放在哪里。
我的问题是为什么即使在指定 PackageLocation 之后,包仍被放置在 /obj/Release/Packages 文件夹中?
【问题讨论】:
-
你确定属性,特别是 PackageLocation 是实际传递给目标包的吗?在 msbuild 语句之前输入一条消息,看看是否不是空字符串。
-
我通过调试运行构建并在目标中设置断点。你是正确的 PackageLocation 是空的。我只是不明白为什么它是空的。
标签: msbuild msdeploy webdeploy