Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MSbuild和具有相同类库引用的多个项目_C#_Msbuild_Visual Studio 2012 - Fatal编程技术网

C# MSbuild和具有相同类库引用的多个项目

C# MSbuild和具有相同类库引用的多个项目,c#,msbuild,visual-studio-2012,C#,Msbuild,Visual Studio 2012,我有一个带有类库和两个windows服务的解决方案文件。所有服务都有对类库的项目引用 在我的构建文件中,我以发布模式构建每个服务,压缩文件并将zip文件复制到一个Web服务器,我们的生产服务器可以从该服务器下载zip文件 问题在于,只构建和部署了第一批服务。所有其他操作都会失败,并出现CSC:错误CS0006:找不到元数据文件“classlibrary.dll” 我做了一个测试解决方案,重现了这个问题。一个空的类库和两个空的控制台应用程序,它们都引用了类库 是因为临时目录相同吗?它适用于web项

我有一个带有类库和两个windows服务的解决方案文件。所有服务都有对类库的项目引用

在我的构建文件中,我以发布模式构建每个服务,压缩文件并将zip文件复制到一个Web服务器,我们的生产服务器可以从该服务器下载zip文件

问题在于,只构建和部署了第一批服务。所有其他操作都会失败,并出现CSC:错误CS0006:找不到元数据文件“classlibrary.dll”

我做了一个测试解决方案,重现了这个问题。一个空的类库和两个空的控制台应用程序,它们都引用了类库

是因为临时目录相同吗?它适用于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>

$(MSBuildProjectDirectory)\Tools\MSBuildCommunityTasks
$(MSBuildProjectDirectory)\Tools\MSBuild.ExtensionPack\
MSbuild测试
$(MSBuildProjectDirectory)\DeploymentPackage\
ConsoleApplication1\ConsoleApplication1.csproj
ConsoleApplication2\ConsoleApplication2.csproj

在每个应用程序用于演示项目之前构建类库,但不用于实际项目


在我的项目中,解决方案是为每个服务使用不同的输出目录。

在脚本中,您在哪里构建类库?我没有。它应该被构建,因为它是一个项目参考,并且在第一个应用程序中运行良好。-在真正的构建文件中,我们有很多目标依赖关系,在这些依赖关系中我们运行单元测试并构建所有解决方案项目。尝试在其他类库之前强制生成类库,看看会发生什么。