簡體   English   中英

如何通過 NuGet 包共享源代碼以用於 .NET Core 項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM