0

現時点では、実装クラス ライブラリと抽象化プロジェクトを使用してソリューションをセットアップしようとしています。nuget.org に両方のパッケージを用意したいと考えています。

通常、ProjectReferences を使用しているだけの場合は、csproj を指すだけで済みます。

Random.Abstractions:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Description>Abstractions for the Randomizer</Description>
    <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
    <Company>MyCompany</Company>
    <Authors>Pieterjan De Clippel</Authors>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" />
  </ItemGroup>

</Project>

ランダム

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Random.Abstractions\Random.Abstractions.csproj" />
  </ItemGroup>

</Project>

もちろん、nuget パッケージをビルドするときは、Random.Abstractions.dllをRandom nuget パッケージ内に配置する必要はありませんが、 RandomパッケージはRandom.Abstractionsパッケージに依存する必要があります。しかし、このパッケージはまだ存在しないため、まだビルドできません。

Microsoft はこの問題を次のように解決できます。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    ...
  </PropertyGroup>

  <ItemGroup>
    ...
  </ItemGroup>

  <ItemGroup>
    ...
    <Reference Include="Microsoft.AspNetCore.DataProtection.Abstractions" />
  </ItemGroup>

</Project>

したがって、これは aProjectReferenceでも a でもありません。そのため、次のPackageReferenceことが可能です。

  1. ソリューションをローカルでビルドおよびテストします (そのため、ソリューションは として機能しますProjectReferences) 。
  2. コードを GitHub にプッシュし、GitHub Actions がパッケージの新しいバージョンを作成して公開できるようにします。その間、それらは相互に依存しています (したがって、そこでは として機能しますPackageReferences) 。

私は自分のソリューションで同じことを試みましたが、具体的な実装を含むプロジェクトは抽象化プロジェクトを見つけることができません:

MyCompany.Random.Abstractions.csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Description>Abstractions for the Randomizer</Description>
    <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
    <Company>MyCompany</Company>
    <Authors>John Wick</Authors>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" />
  </ItemGroup>

</Project>

MyCompany.Random.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="MyCompany.Random.Abstractions" />
  </ItemGroup>

</Project>

したがって、ProjectReference はありません (この nuget パッケージに dll を含めたくありません)、PackageReference はありません (パッケージはまだ公開されていません)。参照だけです。しかし、どういうわけか、Abstractions アセンブリが見つからないというエラーが表示されます。

抽象化アセンブリが見つかりません

NuGet.config を確認しましたが、特別なことは何もありません。

Referenceローカルでのビルド/テスト中にコードを参照し、CI パイプラインのビルド/プッシュ中に新しいパッケージを参照するために、dotnet ベースのプロジェクトでタグを使用するにはどうすればよいですか?

Microsoft.NET.Sdk ドキュメントへの参照

アップデート:

@pinkfloydx33、その通りです。nupkg 内にアセンブリ/dll が 1 つだけ表示されます。

nuget パッケージの内容

更新 2:

Microsoft.SourceLink.GitHubプロジェクトにパッケージを追加し、パッケージの新しいバージョンをダウンロード/解凍すると、次のように表示されますnuspec

Microsoft.SourceLink.GitHub パッケージを追加した後の nuspec

77b181a24a83e46b4c80376f65bb305bedba1a64コミット ID はどこにありますか。

ヒントをありがとう。

4

0 に答える 0