我有3种解决方案,
解决方案
解决方案A
Project A1
是System.Data.SqlClient类(.NET Standard 2.0)的扩展项目。解决方案B
Project B1
是用于管理某些实例(.NET Standard 1.0)的库Project B2
是一个库,用于通过Project A1
(.NET Standard 2.0)通过扩展的System.Data.SqlClient管理实例。解决方案C
Project C1
是一个依赖于A1
和B1
(.NET Standard 2.0)的库Project C2
是一个NUnit测试,取决于以上所有项目(.NET Core 2.2)文件结构
解决方案/项目通过Git子模块导入,其结构如下:
- \
--- \Solution C
------ \Project C1
------ \submodules
--------- \Solution A
------------ Project A1
--------- \Solution B
------------ \Project B1
------------ \Project B2
------------ \submodules
--------------- \Solution A
------------------ \Project A1
问题
虽然我使用Visual Studio打开Solution C
并在其中编译项目,结果却是多种多样的:( note :自解决方案以来,我没有将\Solution C\submodules\Solution B\submodules\Solution A\Project A1
包括在内VS不允许2个名称相同的项目)
VS总是说Project B2
找不到Project A1
(路径为\Solution C\submodules\Solution B\submodules\Solution A\Project A1
),除非我右键单击Project A1
并选择clean,然后重建{{1} }(必须清洁),以下是消息:
Project B2
但是,我尝试仅将Error NU1105 Unable to find project information for '\Solution C\submodules\Solution B\submodules\Solution A\Project A.csproj'. Inside Visual Studio, this may be because the project is unloaded or not part of current solution. Otherwise the project file may be invalid or missing targets required for restore.
克隆到新位置(带有子模块Solution B
),并且可以按预期进行编译和运行。
猜测
Solution A
的2个版本编译项目,而我已经花了几个小时来确保{{ 1}}和Project A1
从相同的分支和版本加载了Solution B
。向导
Solution C
中的Solution A
:FD9834ED-3C94-4445-AE15-DFF0F5C42656 Project A
中的{li} Solution A
与Project A
的子模块文件夹:FD9834ED-3C94-4445-AE15-DFF0F5C42656 Solution A
: E0FEC3C6-42AB-47D9-912A-40B3C5D2BA66 Solution B
: 2A7E2981-87F6-40A5-86F4-D523EC1F68DB 任何帮助将不胜感激
答案 0 :(得分:2)
经过数小时的研究,我们确认了一个.NET机械问题,该问题被保存在不同位置的同一项目,并被其他多个项目引用。哪怕.NET都无法识别它们是同一项目,即使它们都是从git服务器克隆并共享相同的名称。
正如jessehouwing
所建议的(感谢您的所有帮助jessehouwing !!),我们可以将所有项目(子模块)包装到一个巨大的开发解决方案中(我猜这种方法与 solution )
不过,我们要尝试的是采用以下架构:
所以最终我决定去一个内部NuGet提要,而VS2017已经可以在构建中自动生成nupkg文件,该文件已经过测试,可以按预期正常运行。
@jessehouwing您可能会回答这个问题,我会把您的问题设置为答案,再次感谢!