MSBUILD web部署包不包括项目引用DLL';s

MSBUILD web部署包不包括项目引用DLL';s,msbuild,webdeploy,msbuild-4.0,microsoft-web-deploy,Msbuild,Webdeploy,Msbuild 4.0,Microsoft Web Deploy,当我尝试使用msbuild为web部署创建包时,它只包含项目dll。包zip文件或临时目录不包括引用项目的DLL 我已经看过了,这不是我的问题。我肯定是在使用我的主项目中引用的项目的代码,我正在为其创建部署包 我正在使用MSBUILD 4创建包 当我使用完全相同的项目文件使用VS2010创建包时,它工作得很好。所有引用的项目的DLL都包含在package.zip文件中 我尝试过更改_PackageTempDir的位置,但这也没有解决问题 我已尝试删除ExcludeFilesFromDeploym

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

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

我正在使用MSBUILD 4创建包

当我使用完全相同的项目文件使用VS2010创建包时,它工作得很好。所有引用的项目的DLL都包含在package.zip文件中

我尝试过更改_PackageTempDir的位置,但这也没有解决问题

我已尝试删除ExcludeFilesFromDeployment属性,并将PackageAssingFile设置设置为false,以查看这是否会改变结果

这是我的目标包。所有的正则表达式都是这样,我可以从搜索路径的末尾提取我的项目文件名,然后将该名称用作输出文件夹的名称和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,有什么想法吗?

您可以在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

我想知道为什么DeployOnBuild=true会导致程序集未复制到obj文件夹