2017-05-25 8 views
1

.NETコアコンソールアプリケーションと.NETコアクラスライブラリがあります。どちらも非常にシンプルな単一クラスのプロジェクトです。両方とも新しく構築され、最新の.NETコアを新しくインストールします。どちらも.NET Core 1.1を対象としています。.NETコアアプリケーションでDLLを参照するとFileNotFoundExceptionが発生する

System.IO.FileNotFoundException::私は、アプリケーション内の.NETコアクラスライブラリが含まれるたび

このエラーは、実行時に発生NAME「ファイルまたはアセンブリ をロードできませんでした」、バージョン= 1.0.0.0 、Culture =ニュートラル、PublicKeyToken = null '。 システムは、指定されたファイルを見つけることができません。いずれかのプロジェクトをビルド

は大丈夫です、とインテリセンスはusing...ステートメントを含めた後、私のクラスライブラリの内容を示しています。書かれた参照とコードでは、コンパイル時に問題はありません。

私はコンソールアプリケーションの参照先のアセンブリに対してCopy LocalYesを設定しました。参照されるDLLは、実行時にコンソールアプリケーションのbinフォルダに存在します。ここで

csproj参照です:。

<Reference Include="NAME"> 
    <HintPath>path\bin\Debug\netcoreapp1.1\NAME.dll</HintPath> 
    <Private>true</Private> 
    <SpecificVersion>false</SpecificVersion> 
</Reference> 

これが唯一の.NETのコアのDLLで発生し、私は、.NET Frameworkの4.5 *とでは全く問題がありません。

この問題について誰かが気になることはありますか?これに関して私が見つけたすべてのSO/MSDNページは、不適切なバージョンのDLLを対象とするような特定の問題がありましたが、これは役に立ちません。

+0

.NetCore 2.0を使用します。あなたはそれでこのサポートを見つけることができます。プレビューバージョンは既に利用可能です。 https://www.microsoft.com/net/core/preview#windowscmd –

答えて

5

.NET CoreアプリケーションでのDLLファイルの参照は、2.0以前のツールを使用するとサポートされていません。

なぜなら、依存グラフ(deps.jsonファイル)の生成にはこれらのファイルが含まれていないため、とにかく、参照されたDLLの依存関係を統合できないためです。

今後のリリースでは、元のパッケージが使用しているすべてのDLL /パッケージも参照する限り、このシナリオは機能するはずです。構文は次のようになります。

<Reference Include="path/to/my.dll" /> 

.NETコア2.0は、.NET 4.6.1この方法のために構築されているアセンブリを参照してサポートしますが、DLLがサポートされていないAPI呼び出しを使用している場合、それは実行時に失敗することがあります。

+2

実際に.net core 2.0でこの問題が発生しています。 asp.netプロジェクトのみ、コンソールプロジェクトは正常に動作します。 – irperez

1

これが修正点としてカウントされるかどうかは不明ですが、少なくとも回避策です。

DLLを参照するのではなく、単にクラスライブラリのプロジェクトをコンソールアプリケーションに追加しました。コンソールアプリケーションのクラスライブラリプロジェクトへの依存関係参照とクリーン/リビルドが含まれていました。うまく動作します。

明らかに、これは独自のDLLの修正ではありませんが、役立つ可能性があります。

関連する問題