[解決済み] 管理するNuGetパッケージでC++/CLIプロジェクトをサポートするにはどうすればよいですか?
質問
NuGet パッケージを作成し、C# プロジェクトから使用するとうまく動作するようになりました。このパッケージには、DLL が
lib/net40
ディレクトリにあり、DLLは参照として追加されます。
NuGet が C++ をサポートするようになった今、C++/CLI プロジェクトで DLL を管理された参照として追加できるように、私のパッケージを実際にどのように変更すればよいでしょうか。これを説明するチュートリアルを見つけることができません。パッケージをそのまま追加しようとすると、次のエラーが表示されます。
このパッケージを 'Native,Version=v0.0' をターゲットとするプロジェクトにインストールしようとしていますが、このパッケージにはそのフレームワークと互換性のあるアセンブリ参照またはコンテンツ ファイルが含まれていません。
解決策は lib/native の下にファイルを置くことだと思うかもしれませんが、次のようになります。 http://docs.nuget.org/docs/reference/support-for-native-projects によると、それはサポートされていません。また、単に DLL を直接 lib の下に置いても、何も起こらないようです。
どうやら、私はこれを
.props
または
.targets
のようなファイルを作成する必要がありますが、これらのファイルには何を書けばよいのでしょうか?
どのように解決するのですか?
として
Patrick O'Hara さんが書きました。
として、NuGetはあなたのためにC++/CLIプロジェクトに変更を加えることはありません。 参照
GitHub Issue NuGet/Home#1121 - マネージドパッケージを CLI プロジェクトへインストールできない
. しかし、NuGet コマンドライン ユーティリティを使用すると
NuGet.exe
を使用すると、NuGet に必要なパッケージをダウンロードおよび解凍させることができます。
完全な例として、以下の手順で OptimizedPriorityQueue 1.0.0 への参照を Visual Studio 2013 C++/CLI プロジェクト内に追加する手順です。
- パッケージ マネージャー コンソールを開いていない場合は、開きます ( TOOLS > NuGet パッケージマネージャ > パッケージマネージャコンソール ).
-
パッケージ・マネージャー・コンソールで、NuGet.CommandLineパッケージをインストールします。
インストール-パッケージ NuGet.CommandLine
(注意: この記事を書いている時点では、NuGet.CommandLineの最新バージョンは2.8.6です。 あなたにとっては違うかもしれません)。
-
プロジェクトフォルダ内に、現在では
.nuget\packages.config
XML ファイルが作成され、次のような内容になっています。<?xml version="1.0" encoding="utf-8"?> <packages> <package id="NuGet.CommandLine" version="2.8.6" /> </packages>
-
メモ帳++などのテキストエディタに
<package>
要素を追加します。 今回は、追加しました。<package id="OptimizedPriorityQueue" version="1.0.0" />
... 内に
<packages>
要素の中にあります。 -
コマンドプロンプトを開く (私は VS2013 Developer Command Prompt を開きましたが、通常のコマンドプロンプトでも問題ありません)。
-
cd
をプロジェクトフォルダにコピーします。 -
以下のコマンドを実行し、NuGet.CommandLineのバージョン番号が異なる場合は、変更します。
.\packages.CommandLine.2.8.6tools .nugetpackages.exe Install -NonInteractive -OutputDirectory packages .nugetpackages.config
私の場合、出力されたのは
OptimizedPriorityQueue 1.0.0.0'をインストール中です。 OptimizedPriorityQueue 1.0.0.0'のインストールに成功しました。 packages.configに記載されているすべてのパッケージが既にインストールされています。
- Visual Studioでプロジェクトを右クリックし プロパティ . その下に 共通プロパティ > リファレンス をクリックします。 新しい参照の追加... ボタンをクリックします。
- 選択 閲覧 を左側で選択します。 参照の追加]ダイアログの[OK]ボタンと[キャンセル]ボタンの横にある 参照... ボタンがあります。 これをクリックすると、ファイル選択ダイアログが表示されます。
-
NuGetが解凍したDLLを移動して
packages
サブディレクトリに移動し、プロジェクトフォルダーの を追加します。 ボタンをクリックします。 クリック OK をクリックして、[参照の追加]ダイアログを閉じます。 -
これで、C++/CLI プロジェクトでアセンブリを使用することができるようになるはずです。
using namespace Priority_Queue; //...
関連
-
[解決済み] CLSID {XXXX} を持つコンポーネントの COM クラスファクトリの取得は、次のエラーにより失敗しました: 80040154。
-
[解決済み] EF Coreのadd-migrationのビルドに失敗しました。
-
[解決済み] app.configが作成されるタイミングとapp.exe.configが作成されるタイミング、その違いとは?
-
[解決済み] NuGetで旧バージョンのパッケージをダウンロードする
-
[解決済み] RelativeSourceでWPFバインディングを使用するにはどうしたらいいですか?
-
[解決済み] コマンドラインを使用してNuGetパッケージのキャッシュをクリアするにはどうすればよいですか?
-
[解決済み] .NETで文字列から発音区分符号(アクセント)を削除するにはどうすればよいですか?
-
[解決済み] NuGet経由で古いバージョンのパッケージをインストールするにはどうすればよいですか?
-
[解決済み】NuGetパッケージをソリューションの2番目のプロジェクトにインストールするにはどうすればいいですか?
-
[解決済み] ソリューションからnugetパッケージのrestoreを削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み] ファイル *.mdf をデータベースとして添付できません。
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] Microsoft.NETFrameworkとMicrosoft.NETFramework64の違いは何ですか?
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか?
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] .Any() vs .Count() > 0のどちらのメソッドがより良いパフォーマンスを発揮しますか?