5

msbuild を使用して Web デプロイ用のパッケージを作成しようとすると、プロジェクト dll のみが含まれます。パッケージの zip ファイルまたは一時ディレクトリに、参照されているプロジェクトの dll が含まれていません。

私はこの投稿を見てきましたが、それは私の問題ではありません。私は間違いなく、展開パッケージを作成しているメイン プロジェクトの参照プロジェクトのコードを使用しています。

MSBUILD 4 を使用してパッケージを作成しています。

まったく同じプロジェクト ファイルを使用して VS2010 を使用してパッケージを作成すると、正常に動作します。参照されているすべてのプロジェクトの dll は、package.zip ファイルに含まれています。

_PackageTempDir の場所を変更しようとしましたが、それでも問題は解決しませんでした。

ExcludeFilesFromDeployment プロパティを取り出し、PackageAsSingleFile 設定を 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 が含まれていない理由について何か考えはありますか?

4

1 に答える 1

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>

msbuildを呼び出す場合は、次のようにして$(PackageProjectName)で使用されるプロパティを追加する必要があります。

msbuild.exe / property:PackageProjectName = $ project

于 2011-08-19T17:11:12.230 に答える