c# - 如何添加 NuGet 仅源包依赖项
问题描述
我创建了一个框架,用于与 Microsoft 的 CRM/XRM/CDS/PowerPlatform/DataVerse 插件一起使用。这些插件不能包含对外部非 .Net Framwork 非 MicrosoftSDK dll 的任何依赖。我没有使用 ILMerging 依赖项,而是使用了 NuGet 的仅源包,它允许通过 NuGet 共享源文件本身,从而无需引用和 ILMerging 其他 dll。
我正在尝试使这些 NuGet 包 dotnetcore 兼容。有两个 nuget 包 DLaB.Xrm.Source 和 DLaB.Common.Source。DLaB.Xrm.Source 依赖于 DLaB.Common.Source。我能够成功地为 dotnetcore 的 Common 包更新 Nuget 包,一切看起来都很棒。然后我更新了 dotnetcore 的 Xrm 包,但是当我测试只安装 DLaB.Xrm.Source 包时,它似乎没有添加 DLaB.Common.Source 包,因为现在我遇到了那些缺少的构建错误文件,即使它被列为依赖项:
我错过了什么吗?有没有一种方法可以让这个工作,或者我应该直接将 DLaB.Common.Source 文件包含在 DLaB.Xrm.Source 文件中?
这就是我在 NuSpec 文件中列出依赖项的方式:
<dependencies>
<group targetFramework="net">
<dependency id="DLaB.Common.Source" version="1.2.0.10" />
</group>
<group targetFramework="netcoreapp">
<dependency id="DLaB.Common.Source" version="1.2.0.10" />
</group>
</dependencies>
解决方案
看起来这是为 NuGet 设计的。根据这个:
https://docs.microsoft.com/en-us/nuget/reference/nuspec#dependencies-element
内容文件被排除在外,因此我很可能必须在父项中包含依赖项的源文件。
排除:
包含/排除标记的逗号分隔列表(见下文),指示要在最终包中排除的依赖项。默认值为 build,analyzers 可以被覆盖。但是 content/ ContentFiles 也被隐式地排除在不能被覆盖的最终包中。用 exclude 指定的标签优先于用 include 指定的标签。例如,include="runtime, compile" exclude="compile" 与 include="runtime" 相同。
推荐阅读
- swift - 当两个VC在同一个屏幕上时如何正确传递数据
- sql - Redshift - 将数字分成 10 个部分并找出数字属于哪个部分
- google-chrome-extension - 如何在网页中注入基于反应应用程序的 chrome 扩展?
- javascript - 如何在ajax响应javascript jquery中重新分配变量值
- python-3.x - 使用 tkinter 访问函数外的变量
- javascript - 如何跳过找到的值
- javascript - 我该如何检查输入信息是否包含在 user.json 文件中?
- java - ExtentPDFCucumberReporter 抛出 java.lang.ArithmeticException: / 零
- sqlite - 发生异常时很少尝试访问 sqlite3 db
- python - 如何在 PySimpleUI 中的可滚动列内保留空间?