6

.NET 4.6 とユニバーサル Windows プラットフォームを対象とするポータブル クラス ライブラリ プロジェクトがあります。このクラス ライブラリには、コンストラクターに次のコード行を持つクラスが 1 つだけ含まれています。

Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()));

次に、同じソリューションで新しい .NET 4.6 コンソール アプリケーション プロジェクトを作成し、ポータブル クラス ライブラリへのプロジェクト参照を追加します。上記のコード行を含むメソッドを呼び出すと、実行時に次の例外が発生します。

Could not load file or assembly 'System.IO.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

ここで何が間違っていますか?コンパイル時のエラーや警告はありません。

私が試したこと:不足している(?)NuGetパッケージを手動で追加する

System.IO.FileSystem は、Microsoft.NETCore メガ パッケージの一部として、NuGet 経由で提供されるライブラリのようです。わかりました。おそらく、ポータブル クラス ライブラリを使用するすべてのプロジェクトに、このパッケージを明示的に追加する必要があります。私はそうしようとします。

Could not install package 'Microsoft.NETCore.Platforms 1.0.0'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.6', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

このアプローチではうまくいきません。

私が試したこと: project.json ファイルを作成する

Web 上には明確な情報はありませんが、新しい project.json ベースの NuGet ハーネスまたはビルド システムに関する情報をいくつか読みました。試してみるために、コンソール アプリケーション プロジェクトに次の project.json ファイルを作成しました。

{
  "dependencies": {
   },
  "frameworks": {
    "net46": { }
  },
  "runtimes": {
    "win-anycpu": { }
  }
}

できます!実行時エラーがなくなりました!しかし、これは正しい解決策ではないか、完全な解決策ではないことがすぐにわかりました。構成セクションの値を読み取るためのコードを書き始めました。これにはIConfigurationSectionHandlerインターフェイスの使用が含まれ、次のコンパイル時エラーが発生しました。

error CS0246: The type or namespace name 'IConfigurationSectionHandler' could not be found (are you missing a using directive or an assembly reference?)

このインターフェイスは System アセンブリの一部です。このアセンブリへの参照が表示されますが、黄色の感嘆符アイコンがあり、警告ウィンドウに警告が表示されます。

The referenced component 'System' could not be found.

ここでアイデアが尽きた。完全に明らかな何かが欠けていますか?

4

1 に答える 1

1

I have found the solution. My initial attempt was to install the Microsoft.NETCore package into the console application, resulting in the error shown in my original post.

However, if I install only the narrowly-scoped packages, e.g. System.IO.FileSystem, then I achieve success and the application works correctly. Apparently there is something special about the Microsoft.NETCore "master package" that prevents it from correctly installing into dependent projects.

于 2015-08-21T06:25:12.143 に答える