c# – 如何设置nuget引用的动态路径?

以下是示例项目结构:

{ ProjectA }
    { packages } <-- packages are created here
    { ProjectA }
        - ProjectA.csproj <-- references ProjectB and C.
        - packages.config
    - ProjectA.sln <-- contains all projects: A, B and C.

{ ProjectB }
    - ProjectB.csproj
    - packages.config

{ ProjectC }
    - ProjectC.csproj
    - packages.config   

*{ packages} <-- *When I manually paste packages here. So one level above ProjectB.csproj file, then ProjectB compiles.

ProjectA解决方案包含所有三个项目:A,B和C.ProjectA参考ProjectB和ProjectC.

当我编译ProjectA(项目B和C也被编译)时,所有nuget包都被下载到与解决方案文件相同级别的{packages}文件夹中.问题是ProjectB没有编译.是的……只有ProejctB.我甚至不会调查为什么只有一个项目编译,尽管他们的配置完全相同.无论如何…

在ProjectB和C中,当我展开引用时,来自nuget的dll被视为缺失(带有黄色矩形).不管怎样,ProjectC都会编译,但ProjectB却没有.错误说它无法在packages文件夹中找到明确的引用.

我的问题是,我如何编程/配置该发送(伪代码):

“亲爱的ProejctB,请查找与解决方案文件在同一级别生成的包文件夹中的引用.解决方案文件,现在正在尝试编译.谢谢”

PS.从技术上讲,dll(参考)的路径将是有点动态的.它将根据打开/编译项目的解决方案文件而改变.可能吗?

解决方法:

解决它的最简单方法是将HintPath设置为:

<HintPath>$(SolutionDir)\packages\...

在ProjectB和ProjectC的.csproj文件中.它的字面意思是:“查找与解决方案文件在同一级别生成的包文件夹中的引用.解决方案文件,正在尝试立即编译您”

多次报告此问题.我相信它是固定的here.还有NuGetReferenceHintPathRewrite,但我没有测试它.

上一篇:使用 NuGet 套件管理工具


下一篇:c# – Elmah MySql Nuget包问题’无法加载文件或程序集’