C# 如果两个nuget包指向同一个Dll怎么办
嗯。所以我有一个解决方案和三个项目C# 如果两个nuget包指向同一个Dll怎么办,c#,.net-core,nuget,nuget-package,C#,.net Core,Nuget,Nuget Package,嗯。所以我有一个解决方案和三个项目 Project-A.csproj(变成A.nupkg) 项目B.csproj(转化为B.nupkg) Utils.csproj 由于utils.csproj有许多中心函数,因此a和B都将utils.dll作为项目引用。所以基本上,当我转到A或B的/bin文件夹时,我可以看到utils.dll。到目前为止还不错 现在,我有另一个项目。让我们称之为consumer.csproj,它以前面提到的相同顺序引用了A.nupkg和B.nupkg。此外,Utils.dll具
.json
文件
现在,当我首先引用A.nupkg时,它确实带来了utils.dll,然后我的使用者项目知道,当运行代码请求utils.dll时,它需要转到/A/lib。这是正常的,直到我的消费者项目调用了一些B.nupkg功能,然后调用了utils.csproj功能,该功能在a.nupkg/lib文件夹中查找一些json文件,因为现在每次调用utils.csproj时,编译器都会转到a.nupkg文件夹查找它
这里有什么我做错的吗?如果没有,我可以做些什么来解决这个问题
现在,我需要以可移植的格式维护库项目和NUGET。这意味着,如果您需要它从json文件动态获取配置等,您的utils项目不应该在内部尝试使用这些json。您的utils项目必须具有类似于
UtilsConfig.UseJson(“您的json路径”)
的函数。此功能现在可用于消费者项目的启动。如果A
和B
也需要特定的json文件,则始终可以使用UseJson
函数,如果需要,使用者项目将覆盖它们 从可移植性的角度来看,从我的经验中学到的是一件事。对于Nuget的用户来说,运送Nuget软件包并没有神奇地简化。如果要随Nuget软件包提供多个项目DLL,则有以下选项:
utils.dll
,那么utils.csproj应该是.Nuget包,而A.csproj和B.csproj应该将utils.nupkg作为包而不是项目引用。这样,下游的任何消费者都不会对谁负责运输和包装utils.dll感到困惑你能说明你想要实现什么吗?似乎您希望加载2个utils.dll,而它甚至没有强签名。。。这至少在运行时不会发生。。。(通常人们会期望共享库来自单独的共享NuGet…但它根本不像你所寻找的那样)@AlexeiLevenkov实际上不惜一切代价来解决这个问题。如果这意味着应该将utils.csproj转换为utils.nupkg,则可以使用它。经过一番思考,我也同意这是唯一理想的情况。你提出了一个很好的观点。这里的问题是.json文件几乎是不可变的。你认为保持它们的可配置性会有很大的作用吗?