У меня установлен Visual Studio 2015, и я создал приложение .NET 4.6, которое зависит от некоторых сторонних сборок .NET, которые зависят от некоторых C++ DLL и EXE, которые, в свою очередь, зависят от распространяемого Visual C++ 2012 x64. SDK, который я использую, включает в себя некоторые модули слияния, которые развертывают сборки .NET и C++ SDK, от которых я зависим (но не от времени выполнения Visual C++).VC++ 2010 и VC++ 2012 Предварительные требования для проекта Visual Studio 2015 Setup
Если распространяемый объект Visual C++ 2012 не установлен на целевой машине, приложение .NET 4.6 падает при запуске, говоря Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'MyManagedDependency.dll' or one of its dependencies. The specified module could not be found.
Это происходит, даже если у меня есть распространяемые компоненты Visual C++ 2015, установленные в целевой системе. Таким образом, похоже, что зависимость времени выполнения C++ не совместима в обратном/форвардном режиме.
Я использую проект установки Visual Studio 2015 для создания программы установки для своего приложения. Тем не менее, список установщиков Предпосылки, которые я могу выбрать, не включают библиотеки Runtime Visual C++ 2012. Единственными библиотеками Visual C++, которые я могу выбрать в качестве предварительных условий проекта, являются «Visual C++» 14 «Runtime Libraries». Я считаю, что это то же самое, что и Redibbibable для Visual C++ 2015, чего недостаточно для загрузки моего программного обеспечения.
Есть ли способ добавить среду исполнения Visual C++ 2012 в список требуемых параметров для моего установщика проекта установки VS2015 (например, путем установки большего количества SDK)? Или есть другой способ, которым я должен упаковывать среду выполнения C++ 2012 в моем установщике?
EDIT: Рытье через установщик пакет сторонней SDK Я использую документацию &, похоже, мое приложение может реально работать только правильно, если как Visual C++ 2010 и 2012 распространяемых присутствуют на мишени система. Также мне может потребоваться установить как x86, так и x64 версии. Я не думаю, что я могу установить все те, с модулями слияния так this page says:
Мы рекомендуем вам не использовать модули слияния, за исключением, когда вы не должны обслуживать приложения и не имеем зависимости от более одной версии DLL. Объединение модулей для разных версий одной и той же DLL не может быть включено в один установщик, а слияние модулей затрудняет обслуживание DLL независимо от вашего приложения. Вместо этого мы рекомендуем вам установить распространяемый пакет Visual C++.
Как добавить эти старые распространенные компоненты в качестве предварительных условий для моего проекта установки VS2015?
Возможно, я не общался, потому что я не эксперт по установке C++ или Windows. Установка SDK корректно устанавливает предварительные условия времени выполнения на машине разработчика, как часть установщика SDK. Я хочу распространять свое приложение, которое * использует * SDK, не требуя установки самого SDK на компьютере конечного пользователя. Так что все, что мне нужно, это время выполнения C++ для предварительного пакета для моего собственного пакета установщика (вместе с модулями слияния, которые я уже установил). Я не уверен, почему этого не удалось достичь с помощью проектов VS 2015 Setup? – Hydrargyrum
Я тоже не уверен, вам просто нужно скопировать библиотеки DLL в каталог установки. Не следует принимать больше, чем msvcr100.dll и msvcr110.dll, но если вы не можете понять, какие другие DLL вам нужны, спросите автора SDK. –
Мои предыдущие поисковые запросы не должны иметь правильных ключевых слов. Это выглядит актуальным: http://stackoverflow.com/questions/15619728/vs2010-setup-project-with-c-2008-redistributables – Hydrargyrum