我有几个共享某些常见项目的解决方案,例如包含访问我的数据模型所需的所有项目的项目。
实际问题是尝试在一个带有依赖项的项目(例如Iesi.Collections)中安装带有NuGet的软件包,会在当前解决方案目录中创建对dll的引用,而不是在proyect目录中。然后,当我尝试转到另一个解决方案时,共享项目无法编译(因为缺少程序集)。
我已经四处搜索,以独立的方式在解决方案之间的共享项目中使用NuGet。
所以问题是......如何在NuGet中管理获取独立行为和解决方案?
答案 0 :(得分:1)
解决此问题的一种方法是向所有解决方案添加.nuget\NuGet.config
文件,并将repositoryPath
设置为已删除的本地文件夹。
来自this link,假设您正在使用VS2015:
在解决方案的根目录中(在文件系统上)创建一个.nuget文件夹(如果您在使用Windows资源管理器创建.nuget
文件夹时遇到问题,可以输入{{} 1}}代替)
在该文件夹中,创建一个文件NuGet.config。
在Visual Studio 2015中,右键单击解决方案并添加名为“.nuget”的新解决方案目录
右键单击该文件夹并选择添加新的现有文件,然后选择在(2)中创建的NuGet.config文件。
在NuGet.config文件中添加这样的内容:
.nuget.
请注意,您必须修复现有引用,例如删除然后再添加所有包。
我个人使用包的绝对路径,因为并非我的所有解决方案都在同一个文件夹层次结构中 - 如果你在团队中,你可能想先讨论它。
答案 1 :(得分:0)
解决此问题的另一种方法是修改.csproj
文件中的包引用路径,例如使用$(SolutionDir)
宏 - 这将指向两个解决方案中正确目录的引用:
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>
$(SolutionDir)packages\Newtonsoft.Json.10.0.3\lib\net40\Newtonsoft.Json.dll
</HintPath>
</Reference>
...
</ItemGroup>