【发布时间】:2014-10-11 11:24:21
【问题描述】:
我有一个包含一些项目的 Visual Studio C# 解决方案。其中一个项目需要引用另一个不属于解决方案的项目。
一开始我是在引用 dll:
<ItemGroup>
<Reference Include="ExternalProj1, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Proj1\ExternalProj1.dll</HintPath>
</Reference>
</ItemGroup>
但是,我必须引用项目,以便它们生成它们的 dll。事实上,如果我引用了 dll 而它们还没有被创建,我需要单独构建这些项目。
但是在引用项目时:
<ItemGroup>
<ProjectReference Include="..\..\Proj1\ExternalProj1">
<Project>{3341b552-a569-4313-aabc-34452fff60ac}</Project>
<Name>ExternalProj1</Name>
</ProjectReference>
</ItemGroup>
但是,编译器在构建时找不到这些程序集。奇怪的是,构建过程被报告为成功完成,但错误窗口报告了一个警告:
找不到引用的组件 ExternalProj。
那么,我做错了什么?谢谢
【问题讨论】:
-
为什么DLL存放在Proj1\ExternalProj1.dll而不是Proj1\Bin\Release\ExternalProj1.dll??您是否正确记录了这个问题?
-
您不能引用不属于您的解决方案的项目;你只能引用它的输出程序集。
-
@ThomasLevesque 你当然可以! “解决方案”是海市蜃楼。项目通过文件名引用带有
ProjectReference的其他项目。当您完全丢弃 sln 文件时它们起作用的事实应该告诉您一些事情。 (注意,他使用的是ProjectReference,而不是我没有直接经验的Reference) -
@jdlugosz,谢谢你的提示,我不知道
标签: c# .net visual-studio msbuild csproj