我的Visual Studio解决方案中有四个项目(每个人都针对.NET 3.5)-对于我的问题,只有这两个很重要:
- MyBaseProject <-该类库引用了第三方DLL文件(elmah.dll)
- MyWebProject1 <-此Web应用程序项目对MyBaseProject的引用
我加入了elmah.dll参考MyBaseProject通过点击在Visual Studio 2008中的“添加引用...”→“浏览”选项卡→选择“elmah.dll”。
《 Elmah参考》的属性如下:
- 别名-全球
- 复制本地-正确
- 文化-
- 说明-ASP.NET的错误记录模块和处理程序(ELMAH)
- 文件类型-组装
- 路径-D:\ webs \ otherfolder \ _myPath \ __ tools \ elmah \ Elmah.dll
- 解决-正确
- 运行时版本-v2.0.50727
- 指定版本-否
- 强名-错误
- 版本-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:ReBuild / p:Configuration = Debug MyProject.sln )MyWebProject1的bin目录中缺少 elmah.dll-尽管构建本身没有警告或错误!
我已经确保MyBaseProject的.csproj包含值为“ true” 的私有元素(这应该是Visual Studio中“ 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>
(尽管Visual Studio说“ copy local”为true,但默认情况下,私有标签未显示在.csproj的xml中。我将“ copy local”切换为false-保存-再次将其设置为true-保存!)
MSBuild有什么问题?如何将(elmah.dll)参考复制到MyWebProject1的bin中?
我不想在每个项目的postbuild命令中添加postbuild复制操作!(想象一下,我会有很多项目依赖于MyBaseProject!)