visual-studio - 如果在解决方案中使用项目依赖项,MSBuild 不会复制引用(DLL 文件)

标签 visual-studio msbuild reference dependencies project

我的 Visual Studio 解决方案中有四个项目(每个项目都针对 .NET 3.5) - 对于我的问题,只有这两个项目很重要:

  1. MyBaseProject <- 该类库引用第三方 DLL 文件 (elmah.dll)
  2. MyWebProject1 <- 此 Web 应用程序项目引用了 MyBaseProject

我通过单击“添加引用...”→“浏览”选项卡→选择“elmah.dll”,将 elmah.dll 引用添加到 Visual studio 2008 中的 MyBaseProject

Elmah 引用的属性如下:

  • 别名 - 全局
  • 复制本地 - true
  • 文化 -
  • 说明 - ASP.NET 的错误日志记录模块和处理程序 (ELMAH)
  • 文件类型 - 程序集
  • 路径 - D:\webs\otherfolder\_myPath\__tools\elmah\Elmah.dll
  • 已解决 - 正确
  • 运行时版本 - v2.0.50727
  • 指定版本 - false
  • 强名称 - false
  • 版本 - 1.0.11211.0

MyWebProject1 中,我通过以下方式添加了对 Project MyBaseProject 的引用: “添加引用...”→“项目”选项卡→选择“MyBaseProject”。除了以下成员之外,该引用的属性是相同的:

  • 描述 -
  • 路径 - D:\webs\CMS\MyBaseProject\bin\Debug\MyBaseProject.dll
  • 版本 - 1.0.0.0

如果我在 Visual Studio 中运行构建,elmah.dll 文件将与 MyBaseProject.dll 一起复制到我的 MyWebProject1 的 bin 目录中!

但是,如果我清理并运行 MSBuild 以获得解决方案(通过 D:\webs\CMS> C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe/t:重新构建/p:Configuration=调试 MyProject.sln) MyWebProject1 的 bin 目录中缺少 elmah.dll - 尽管构建本身不包含警告或错误!

我已经确保 MyBaseProject 的 .csproj 包含值为“true”的 private 元素(这应该是 Visual 中“copy local”的别名)工作室):

<Reference Include="Elmah, Version=1.0.11211.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\mypath\__tools\elmah\Elmah.dll</HintPath>
    **<Private>true</Private>**
</Reference>

(默认情况下,私有(private)标记不会出现在 .csproj 的 xml 中,尽管 Visual Studio 表示“复制本地”为 true。我将“复制本地”切换为 false - 已保存 - 并再次将其设置回 true - 保存! )

MSBuild 有什么问题?如何将 (elmah.dll) 引用复制到 MyWebProject1 的 bin 中?

我不想向每个项目的构建后命令添加构建后复制操作! (想象一下我会有很多项目依赖于 MyBaseProject!)

最佳答案

我就是这样处理的。转到引用的属性并执行以下操作:

Set "Copy local = false"
Save
Set "Copy local = true"
Save

就是这样。

Visual Studio 2010 最初并未放置: <private>True</private>在引用标签中并将“copy local”设置为 false 会导致它创建标签。然后它会相应地将其设置为 true 和 false。

关于visual-studio - 如果在解决方案中使用项目依赖项,MSBuild 不会复制引用(DLL 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1132243/

相关文章:

msbuild - 在 MSBuild 中表达传递依赖,无需导入 PackageReference

c++ - 引用函数返回值

c++ - 可以取地址的变量是左值,这是真的吗?

.net - System.Reactive dll 丢失

c# - 生成 Sonar 属性文件失败。无法完成 SonarQube 分析

vb.net - 在 Visual Basic 2010 中调试时如何输出代码?

msbuild - 在解决方案文件上调用自定义 MSBuild 目标

c++ - 通过引用返回在 C++ 类中如何工作?

visual-studio - 当Nuget包是必需的输出时如何在同一解决方案中引用相关项目

javascript - 使用 Chutzpah 和 requirejs 测试 javascript