c # — пакет NuGet с зависимостью от среды выполнения Visual C ++ 2013

Я создал пакет NuGet из DLL-библиотек .NET4.0, которые содержат смешанный (управляемый и собственный) код.

Собственный код упакован в .NET4.0 DLL, но зависит от Visual C ++ 2013 распространяемый

Я пытаюсь провести мозговой штурм, чтобы либо упаковать пакет с пакетом NuGet, и / или предупредить пользователя, что он им нужен, но я рисую пробел.

У кого-нибудь есть идеи?

9

Решение

Я на самом деле вроде как решил это сам. Хотя я не смог найти решение для включения среды выполнения 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, о необходимости установки среды выполнения.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]