【问题标题】:MSbuild and multiple projects with same class library referencesMSbuild 和具有相同类库引用的多个项目
【发布时间】:2012-11-27 12:12:22
【问题描述】:

我有一个包含类库和几个 Windows 服务的解决方案文件。所有服务都有一个对类库的项目引用。

在我的构建文件中,我以发布模式构建每个服务,压​​缩文件并将 zip 文件复制到我们的生产服务器可以从中下载 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>

【问题讨论】:

  • 在脚本的什么地方,你在构建类库?
  • 我不是。它应该被构建,因为它是一个项目参考,它适用于第一个应用程序。 - 在真正的构建文件中,我们有很多目标依赖项,我们在其中运行单元测试并构建所有解决方案项目。
  • 好吧,我想这可能是问题所在。尝试在其他人之前强制构建类库,看看会发生什么。

标签: c# msbuild visual-studio-2012


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-09-07
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2021-10-04
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多