2017-03-26 20 views
0

私はC++で書かれたdllをいくつかの重い計算をしています。私は.NETコアプロジェクト(VS2015)にインポートする必要があります。 (これは以前のバージョンの.netでもうまく機能しましたが、Microsoftはその機能を削除しました...).netコアプロジェクトにdllを追加する際に問題が発生しました

ローカルのナゲットフィードを設定する必要があることを知っていますので、nuget経由でプロジェクトにdllを引き込むことができます。しかし、私はnugetコマンドを動作させるようには思えません(はい、nuget.exeをダウンロードして実行し、VS2015を再起動しました)。私がNugetコマンドの1つを試してみると、それはちょうど'nuget' is not recognized as an internal....

と書いてあります。NuGet.CommandListがPMコンソールで直接Nuget機能を実行できるようになったという記事も読んでいます。サイコロ...

私はNuGet Package Explorerツールをダウンロードしましたが、それは私のためのナゲットパッケージを作成することができますが、プロジェクトにインポートしようとするとエラーになります。 "YourFace": "1.0.1",をproject.jsonに追加すると、 "依存関係YourFace> = 1.0.1を解決できませんでした"というエラーがNU1001に発生します。ここで

は、パッケージエクスプローラツールからxmlです:

<?xml version="1.0" encoding="utf-8"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata> 
     <id>YourFace</id> 
     <version>1.0.0</version> 
     <authors>Your Face</authors> 
     <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <description>My package description.</description> 
    </metadata> 
</package> 

は、私は、XMLを編集し、<files>セクションのような様々なものを追加しようとしました(内容はツールの右側に探検思っそのshouldnを意味します必要はない)。何も助けたことはありません。

誰でもこの問題を解決する方法は知っていますか?

編集: は時々私は別のエラーが出る:

Package YourFace 1.0.0 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package YourFace 1.0.0 supports: net (.NETFramework,Version=v0.0) 
One or more packages are incompatible with .NETCoreApp,Version=v1.0. 

私は、ファイルをlibフォルダに直接であり、それが正しいのフレームワークフォルダではなく、hasnことを入れ子にする必要があるため、これがあることをどこかで読んどちらも助けませんでした。また、なぜ私は時には1つのエラーと時には他のエラーを取得するのか分かりません。 nugetコマンドがNuGet CLI referencePowerShell referenceと異なっているためである

答えて

1

'nuget' is not recognized as an internal....

。 NuGetはパッケージマネージャコンソールではサポートされていませんが、NuGet CLIリファレンスでサポートされています。

さらに、.netコアの外部DLLを参照するには、独自のナゲットパッケージを作成する必要があります。 NuGetのドキュメントはdllからパッケージを作成する方法を示しています:https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package このためには、nuspecファイルを編集し、次のコードをnuspecファイルに追加する必要があります。

<package> 
<metadata> 
    <id>YourFace</id> 
    <version>1.0.0</version> 
    <authors>Your Face</authors> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>My package description.</description> 
</metadata> 

<files> 
    <file src="path\*.dll" target="lib\netCoreApp1.0"/> 
</files> 

これはあなたを助けることができると思います。

+0

ありがとうございました。CLIのマニュアルが役立ちました。ローカルでナゲットパッケージを作成し、プロジェクト "YourFace": "1.0.0"で参照することができましたが、私のコードで参照しようとするたびにコンパイルエラーが発生します。コントローラ内で)。パッケージがReferencesで正しく表示されていますが、「名前空間の種類が「YourFace」が見つかりませんでした...」というメッセージが表示されます。 – nurdyguy

+0

それは.NET CoreがWindows Store Appsで使用することを許可されている.NET Frameworkのサブセットであり、C++ dllがすべての.NET Frameworkを対象としている必要があるためです。したがって、C++で書かれたdllは.netコアプロジェクトと互換性がありません。上記の回答で問題が解決した場合は、同じ問題が発生している他のコミュニティにとって有益な、それをマークすることができます。そうでない場合は、最新情報をお知らせください。別の質問がある場合は、新しい質問を投稿することをお勧めします。ありがとう。 –

+0

私はまだエラーが発生していますが、新しい質問を投稿します。 – nurdyguy

関連する問題