MSBUILD Web部署包不包含项目引用DLL

时间:2011-08-11 19:40:34

标签: msbuild webdeploy msbuild-4.0 microsoft-web-deploy

当我尝试使用msbuild为Web部署创建一个包时,它只包含项目dll。包zip文件或临时目录不包含引用项目的dll。

我看过this post,这不是我的问题。我肯定使用我正在创建部署包的主项目中引用项目的代码。

我正在使用MSBUILD 4来创建包。

当我使用完全相同的项目文件使用VS2010创建包时,它可以正常工作。所有引用的项目都将其dll包含在package.zip文件中。

我已经尝试更改_PackageTempDir的位置,但也没有解决问题。

我尝试取出ExcludeFilesFromDeployment属性并将PackageAsSingleFile设置为false,以查看是否会改变结果。

这是我的Package目标。所有的正则表达式都是这样我可以从搜索路径的末尾拉出我的项目文件名,然后使用该名称作为输出文件夹的名称和zip文件的名称。 PackageOutputDir是我要导入的属性。

  <Target Name="Package">
    <MSBuild Projects="@(PackageProject)" Targets="Package" Properties="Platform=$(Platform);
                                                                           Configuration=$(Configuration);
                                                                           DeployOnBuild=true;
                                                                           DeployTarget=Package;
                                       PackageLocation=$(PackageOutputDir)\$([System.Text.RegularExpressions.Regex]::Split($(ProjectName), '(.*\\)([a-z,A-Z,0-9,_,-]+)(\.\*proj;)')[2])\$([System.Text.RegularExpressions.Regex]::Split($(ProjectName), '(.*\\)([a-z,A-Z,0-9,_,-]+)(\.\*proj;)')[2]).zip;
                                       PackageAsSingleFile=true;
                                       ExcludeFilesFromDeployment=Web.config;
                                       _PackageTempDir=$(PackageOutputDir)\temp;">
    </MSBuild>
  </Target>

关于为什么它不包括我引用的项目dll的任何想法?

1 个答案:

答案 0 :(得分:4)

您可以在MasterBuild.proj中执行以下操作。

  <Target Name="Package">
    <ConvertToAbsolutePath Paths="$(PackageOutputDir)">
      <Output TaskParameter="AbsolutePaths" PropertyName="Source_Dir_Abs"/>
    </ConvertToAbsolutePath>
   <MSBuild Projects="@(PackageProject)" Targets="Package"
      properties="Platform=$(Platform);
      Configuration=$(Configuration);
      DeployOnBuild=false;
      DeployTarget=Package;
      PackageLocation=$(Source_Dir_Abs)\$(PackageProjectName).zip;
      PackageAsSingleFile=true;
      ExcludeFilesFromDeployment=Web.config;
      _PackageTempDir=$(PackageOutputDir)\temp;">
  </MSBuild>
  </Target>

如果您正在调用msbuild,则需要通过执行以下操作添加将在$(PackageProjectName)中使用的属性:

msbuild.exe / property:PackageProjectName = $ project