In realtà mi sono risolto da solo. Mentre non sono riuscito a trovare una soluzione per includere VCpp Runtime come dipendenza da un pacchetto NuGet, ho trovato una soluzione per avvisare l'utente che era necessario il Runtime di Visual C++ 2013.
ho eseguito questo codice, una volta, in modo statico, all'avvio del componente/libreria che richiede l'VC++ Runtime:
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");
}
}
Questo dovrebbe avvisare eventuali sviluppatori che stanno consumando il pacchetto NuGet che hanno bisogno di installare il runtime .
fonte
2016-02-21 18:26:23
Abbastanza dubbioso che sia una buona idea nasconderlo. Non è solo il CRT, che è facile da risolvere, ma anche una dipendenza durissima rispetto all'impostazione di destinazione della piattaforma del progetto client. Molto difficile da nascondere se non si dispone di un wrapper puro. Consigli di base [in questo post] (http://stackoverflow.com/a/28771413/17034). –
Non voglio necessariamente nascondermi, ma voglio almeno informare. In caso contrario, chiedo agli utenti di colpire il supporto tecnico con domande tipo "Y U NO Work" –