57

Nugetを使用してパッケージを作成しています。.nuspec他のNuGetパッケージへの()ファイルの依存関係を含まないパッケージを作成したいと思います。私のプロジェクトでは、ファイルにNuGetパッケージの依存関係が定義されていpackages.configます。

まず、.nuspecファイルを作成します...

C:\code\MySolution>.nuget\nuget.exe spec MyProject\MyProject.csproj

.nuspec生成されたファイルを、依存関係のない最小限に編集します。

<?xml version="1.0"?>
<package >
  <metadata>
    <id>MyProject</id>
    <version>1.2.3</version>
    <title>MyProject</title>
    <authors>Example</authors>
    <owners>Example</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Example</description>
    <copyright>Copyright 2013 Example</copyright>
    <tags>example</tags>
    <dependencies />
  </metadata>
</package>

次に、ソリューションをビルドしてNuGetパッケージを作成します...

C:\code\MySolution>.nuget\nuget.exe pack MyProject\MyProject.csproj -Verbosity detailed

これがそのコマンドの出力です...

Attempting to build package from 'MyProject.csproj'.
Packing files from 'C:\code\MySolution\MyProject\bin\Debug'.
Using 'MyProject.nuspec' for metadata.
Found packages.config. Using packages listed as dependencies

Id: MyProject
Version: 1.2.3
Authors: Example
Description: Example
Tags: example
Dependencies: Google.ProtocolBuffers (= 2.4.1.473)

Added file 'lib\net40\MyProject.dll'.

Successfully created package 'C:\code\MySolution\MyProject.1.2.3.nupkg'.

作成された.nupkgパッケージには.nuspecファイルが含まれていますが、元のファイルにはなかった依存関係セクションが含まれてい.nuspecます...

<dependencies>
  <dependency id="Google.ProtocolBuffers" version="2.4.1.473" />
</dependencies>

これが原因だと思います...(上記の出力から)

Found packages.config. Using packages listed as dependencies

NuGetが依存関係を自動的に解決せず、コマンド.nuspecから生成されたファイルに挿入しないようにするにはどうすればよいですか?pack

現在、NuGet2.2を使用しています。また、この動作は古いバージョンのNuGetでは発生しなかったと思います。これは新しい「機能」ですか?この「機能」またはいつ実装されたかを説明するドキュメントが見つかりませんでした。

4

6 に答える 6

54

バージョン 2.7 には、依存関係を含めないように package.config に設定できる developmentDependency というオプションがあります。

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="jQuery" version="1.5.2" />
    <package id="netfx-Guard" version="1.3.3.2" developmentDependency="true" />
    <package id="microsoft-web-helpers" version="1.15" />
</packages>
于 2013-09-05T23:13:41.447 に答える
3

含めるファイルを明示的に指定してから、nuspec ファイル自体で pack コマンドを実行できます。

<?xml version="1.0"?>
<package >
  <metadata>
    <id>MyProject</id>
    <version>1.2.3</version>
    <title>MyProject</title>
    <authors>Example</authors>
    <owners>Example</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Example</description>
    <copyright>Copyright 2013 Example</copyright>
    <tags>example</tags>
    <dependencies />
  </metadata>

  <files>
    <file src="bin\Release\MyProject.dll" target="lib" />
  </files>

</package>

ここで、nuspec ファイルへの相対パスを使用して src 属性を設定する必要があります。その後、pack コマンドを実行できます。

nuget.exe pack MyProject\MyProject.nuspec
于 2013-02-21T22:14:02.297 に答える
0

NuGet パッケージの実行に必要な依存関係を無視したい理由がわかりませんが、代わりにNuGet パッケージ エクスプローラーツールを使用してパッケージを作成することを考えたことはありますか?

于 2013-02-21T22:08:41.767 に答える