![](/img/trans.png)
[英]How to avoid ambiguous references on nuget source code packages includeded in two projects with internalsvisibleto
[英]How to share source code via NuGet packages for use in .NET Core projects
我想制作可用於 .NET Core 項目 (.csproj) 的小段源代碼(例如幫助程序類)。 至此,我根據不同的博文和官方的 nuget 文檔,以多種不同的方式用 NuGet 打包了源代碼。 我使用了一個 nuspec 文件來控制我的源文件在 nuget 包中的最終位置,例如:
<files>
<file src="*.cs" target="content/LruCache" />
<file src="*.cs" target="contentFiles/cs/any/LruCache" />
</files>
我沒有包含任何 msbuild 目標文件或安裝腳本。
每當我將 NuGet 包安裝到 .NET Core 項目 ( https://docs.microsoft.com/en-us/dotnet/core/tools/csproj ) 中時,我根本什么都沒有。 我的項目中不會包含任何源文件。 我為 .csproj(PrivateAssets 等)中的<PackageReference/>
節點嘗試了不同的設置,但沒有成功。
這意味着可能嗎? 如果是這樣,應該怎么做?
背景:
這樣做的原因是某種菱形問題,我們有項目 B 和 C 都使用輔助類 A,第三個項目 D 使用 B 和 C。在這種情況下,我不想在不同時處理程序集版本沖突(不兼容)版本的 A 已在 B 和 C 中使用。
這意味着可能嗎? 如果是這樣,應該怎么做?
答案是肯定的。 由於您測試項目類型是.net core。 您應該使用contentFiles
而不是content
。 content
用於 packages.config。 檢查使用 contentFiles 元素獲取內容文件和博客NuGet ContentFiles Demystified了解更多詳細信息。
所以你的.nuspec
文件應該是:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MyTestCore</id>
<version>5.0.0</version>
<authors>TestContentFile</authors>
<owners>TestContentFile</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package Description</description>
<contentFiles>
<files include="any/any/Test.cs" buildAction="content" flatten="true" copyToOutput="true"/>
</contentFiles>
</metadata>
<files>
<file src="contentFiles/any/any/Test.cs" target="contentFiles/any/any/LruCache" />
</files>
</package>
nuget 包應如下所示:
注意:創建新包時,不要忘記刪除C:\Users\<UserName>\.nuget\packages
文件夾中此包的 nuget 緩存,否則,它總是安裝舊包。
使用此方法,源文件將包含在您的項目中。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.