0

クラス ライブラリといくつかの Windows サービスを含むソリューション ファイルがあります。すべてのサービスには、クラス ライブラリへのプロジェクト参照があります。

私のビルド ファイルでは、各サービスをリリース モードでビルドし、ファイルを圧縮し、zip ファイルを、運用サーバーが zip ファイルをダウンロードできる Web サーバーにコピーします。

問題は、最初のサービスのみが構築および展開されることです。他のすべては CSC で失敗します: エラー CS0006: メタデータ ファイル "classlibrary.dll" が見つかりませんでした。

問題を再現するテスト ソリューションを作成しました。1 つの空のクラス ライブラリと 2 つの空のコンソール アプリケーションの両方に、クラス ライブラリへの参照が含まれています。

一時ディレクトリが同じだからですか?Web プロジェクトと同じ一時ディレクトリで問題なく動作します。

そして、このビルドファイル。

    <?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\Tools\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
  </PropertyGroup>
  <Import Project="Tools\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
  <PropertyGroup>
    <ExtensionTasksPath>$(MSBuildProjectDirectory)\Tools\MSBuild.ExtensionPack\</ExtensionTasksPath>
  </PropertyGroup>
  <Import Project="Tools\MSBuild.ExtensionPack\MSBuild.ExtensionPack.tasks" />

  <PropertyGroup>
    <ProjectName>MSbuild test</ProjectName>
  </PropertyGroup>


  <Target Name="DeployAll" >
    <Message Text="DeploymentPackage $(ProjectName)" />

    <PropertyGroup>
      <TempDeploymentDirectory>$(MSBuildProjectDirectory)\DeploymentPackage\</TempDeploymentDirectory>      

      <ProjectFile1>ConsoleApplication1\ConsoleApplication1.csproj</ProjectFile1>
      <ProjectFile2>ConsoleApplication2\ConsoleApplication2.csproj</ProjectFile2>

    </PropertyGroup>

    <RemoveDir Directories="$(TempDeploymentDirectory)" />

    <MSBuild Projects="$(ProjectFile1)" Properties="Configuration=Release;OutDir=$(TempDeploymentDirectory)" Targets="Clean;Build"/>

    <!-- Zipping copying files removed for readability -->

    <RemoveDir Directories="$(TempDeploymentDirectory)" />    

    <MSBuild Projects="$(ProjectFile2)" Properties="Configuration=Release;OutDir=$(TempDeploymentDirectory)" Targets="Clean;Build"/>


  </Target>





</Project>
4

1 に答える 1

0

各アプリケーションの前に classLibrary をビルドすると、デモ プロジェクトでは機能しましたが、実際のプロジェクトでは機能しませんでした。

私のプロジェクトでの解決策は、サービスごとに異なる出力ディレクトリを使用することでした。

于 2012-11-28T09:20:42.050 に答える