.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.
ここでアイデアが尽きた。完全に明らかな何かが欠けていますか?