如果在解决方案中使用项目依赖项,MSBuild不复制引用(DLL文件)
我的VisualStudio解决方案中有四个项目(每个项目都针对.NET 3.5)-对于我的问题,只有这两个项目很重要:
MyBaseProject <- this class library references a third-party DLL file (elmah.dll)
MyWebProject 1 <- this web application project has a reference to MyBaseProject
我添加了elmah.dll引用MyBaseProject在VisualStudio 2008中,单击“AddReference.”→“Browse”选项卡→,选择“elmah.dll”。
Elmah引用的属性如下:
- 别名-全局
复制本地-真
- 文化-
- 描述-用于ASP.NET的错误日志记录模块和处理程序(ELMAH)
- 文件类型-程序集
- 路径-D:\webs\otherfolder\_myPath\__tools\elmah\Elmah.dll
- 解决-真
- 运行时版本-v2.0.50727
- 指定版本-假
- 强名称-假
- 版本-1.0.11211.0
在……里面MyWebProject 1我通过以下方式添加了对ProjectMyBaseProject的引用:“AddReference.”→“Projects”选项卡→选择“MyBaseProject”。除下列成员外,此引用的属性相同:
- 描述-
- 路径-D:\webs\CMS\MyBaseProject\bin\Debug\MyBaseProject.dll
- 版本-1.0.0.0
如果我在VisualStudio将elmah.dll文件复制到我的MyWebProject 1垃圾箱目录,以及MyBaseProject.dll!
但是如果我清理和跑MSBuild对于解决方案(通过D:\webs\CMS>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe/t:重构/p:配置=Debug MyProject.sln)elmah.dll失踪在MyWebProject 1的bin目录中-尽管构建本身不包含警告或错误!
我已经确保MyBaseProject的.csproj包含私元素,其值为“true”(应该是“复制本地“在VisualStudio中):
<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>
(默认情况下,私有标记没有出现在.csproj的XML中,尽管VisualStudio说“复制本地”为true。我将“复制本地”切换为假保存-并将其重新设置为true-保存!)
MSBuild有什么问题?如何将(elmah.dll)引用复制到MyWebProject 1的bin中?
我不想在每个项目的后置命令中添加一个后期复制操作!(想象一下,我会有许多项目依赖于MyBaseProject!)