如何从另一个项目中添加引用到共享代码项目(.shproj)

26
当我在Visual Studio中创建一个新的通用应用程序项目时,它会创建一个共享项目,让我可以在创建的Windows Phone 8.1和Windows 8.1项目之间共享代码。
现在我有其他项目,我也想使用那个共享的代码。但是,我没有看到在“添加引用……”窗口中选择该项目的方法。
如果我尝试从其中一个现有项目复制引用,我会收到以下错误:
“灾难性故障(HRESULT异常:0x8000FFFF (E_UNEXPECTED))”
当我点击“粘贴引用”时。我如何从其他项目中引用共享项目?
5个回答

40

添加引用需要编辑要添加引用的项目文件。如果有帮助的话,您可以查看已经引用的项目文件以查看可工作的示例。

在项目文件(例如 .csproj)底部附近,可能已经存在一个 <Import> 元素,例如:

<Project ...>
  [...]
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

您可以通过添加类似于共享项目的元素来添加共享项目。例如:

<Project ...>
  [...]
  <Import Project="..\Shared\Shared.projitems" Label="Shared" />
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

1
在这里看到如何添加对dll的引用也是很好的。 - Jarekczek
2
我希望在Visual Studio 2017中,您不必修改.csproj文件。 - Omzig
@Omzig,@theguy的VS2017答案不起作用吗?我无法测试它。 - vossad01
显然,我在共享项目方面遇到的问题与我正在运行的单元测试有关。https://developercommunity.visualstudio.com/content/problem/184544/shared-projects-missing.html - Omzig
1
我在VS 15.6.6的webapi2项目中遇到了这个问题,所以它不仅限于单元测试。 - JP Hellemons
显示剩余2条评论

10

Visual Studio 2017:

在“解决方案资源管理器”中右键点击“引用(References)”或“依赖项(Dependencies)”,然后选择“添加引用...”

Dependencies or References context menu

将打开“引用管理器”。在左侧的引用管理器上单击“共享项目(Shared Project)”

enter image description here

然后选择您的项目并单击“确定”。


4
理论上这应该也适用于VS2015(相同的选项卡都存在)。然而,我遇到了一个问题,即共享项目出现了某些原因未列出的情况。 - Mage Xy
5
@MageXy,你确定这些是Visual Studio 2017的截图吗?我的VS2017没有“Shared Projects”/grr。 - Omzig
1
我在VS2017的引用管理器中没有看到“共享项目”。 - Matthew
我正在使用VS 2017,并且在引用管理器的左侧有共享项目。然而,我找不到添加共享项目的方法。我点击了“浏览...”按钮,然后尝试添加.sln文件,但失败了。然后我尝试添加.shproj文件,也失败了。 - Rod
请检查您的VS 2017版本。在15.9中有一个错误修复,将显示共享项目选择。 - JoeyD

3
TargetProject.csproj 文件中添加以下字符串:
<Import Project="..\YourSharedProject\YourSharedProject.projitems" Label="Shared" Condition="Exists('..\YourSharedProject\YourSharedProject.projitems')" />

这对我有用。VS2019 - 如果我将一个“现有”项目添加到解决方案中,那么它才允许我向目标添加“共享”项目引用。这是通过GUI实现的。如果我直接向目标csproj添加像上面那样的行,它也可以工作。 - Bill Noel

0

检查您的Visual Studio版本。在VS2017中,版本15.9有一个错误修复程序,可以显示共享项目选择器。单击“工具”->“更新”以获取VS的最新版本。


-3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接