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

Ben*_*son 5 msbuild msbuild-4.0 webdeploy microsoft-web-deploy

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

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

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

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

小智 5

您可以在 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>
Run Code Online (Sandbox Code Playgroud)

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

msbuild.exe /property:PackageProjectName=$project