私は実際にこの種の自分を解決しました。 VCppランタイムをNuGetパッケージに依存するソリューションとして見つけることはできませんでしたが、Visual C++ 2013ランタイムが必要であることをユーザーに警告するソリューションを見つけました。
私はVC++ランタイムを必要とするコンポーネント/ライブラリの起動時に、静的に、一度このコードを実行します。
private static void AssertVcppDependencies()
{
var system32Path = Environment.GetFolderPath(Environment.SpecialFolder.SystemX86);
var system64Path = Environment.GetFolderPath(Environment.SpecialFolder.System);
string platform = Environment.Is64BitProcess ? "x64 and x86" : "x86";
bool success = File.Exists(Path.Combine(system32Path, MSVCP120DllName));
if (Environment.Is64BitProcess)
{
success &= File.Exists(Path.Combine(system64Path, MSVCP120DllName));
}
if (!success)
{
throw new InvalidOperationException("This Application Requires the Visual C++ 2013 " + platform +
" Runtime to be installed on this computer. Please download and install it from https://www.microsoft.com/en-GB/download/details.aspx?id=40784");
}
}
これは、彼らがランタイムをインストールする必要があり、あなたのNuGetパッケージを消費しているすべての開発者に警告しなければなりません。
これを隠すことをお勧めしますか? CRTだけではなく、簡単に解決できます。また、クライアントプロジェクトのPlatformターゲット設定にも強く依存しています。あなたが純粋なラッパーを持っていない場合、非常に難しいです。基本的なアドバイス[この記事では](http://stackoverflow.com/a/28771413/17034)。 –
私は必ずしも隠したくはありませんが、私は少なくとも通知したいと思います。それ以外の場合、私はユーザーに「Y U NO Work」タイプの質問で技術サポートを打つ –