lon*_*nix 8 .net msbuild nuget .net-core
仅开发包(例如分析器、构建工具)的 nuget 安装页面通常显示以下内容:
<PackageReference Include="Foo" Version="1.2.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime;build;native;contentfiles;analyzers;...</IncludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)
对于此类包,该PrivateAssets属性始终设置为all。
该IncludeAssets属性也始终被指定。肯定是多余的吗?
ziv*_*kan 12
该compile资产未在 中列出InlcudeAssets,因此实际上它并不相同。缺少compile资产意味着如果包包含lib/或下的任何 dll ref/,您将无法调用这些 API,这是一件好事,因为该包不会被列为对您自己的包的依赖项。
如果您删除该IncludeAssets行并调用 API,那么任何使用您的包的人(并调用使用您的“privateassets=all”包引用的 API),那么在运行时将抛出 FileNotFoundException。
因此,拥有一条IncludeAssets删除线compile是一件好事,尽管可以通过将其替换为 来实现相同的效果<ExcludeAssets>compile</ExcludeAssets>,这样会更清晰。
我的直觉是这runtime也应该被排除,但我不知道为什么在实施此方案时从事 NuGet 的人们做出了不同的决定。
| 归档时间: |
|
| 查看次数: |
3449 次 |
| 最近记录: |