在Visual Studio 2013中,VC++ 2012运行时引导程序包在哪里?

6
我有一个使用 ClickOnce 部署的 .NET 4.5.2 应用程序。它使用 Magick.NET 库,该库需要 Visual Studio 2012 的 Visual C++ 可再发行组件。我已经尝试了 2013 版本的包,但仍然需要 2012 版本才能正常工作。不幸的是,在 Visual Studio 2013 的可能先决条件中,列出的唯一版本是 2013 版本。其他版本无处可寻:

Visual Studio 2013 ClickOnce prerequisite window

如何在使用Visual Studio 2013创建的ClickOnce应用程序中包含Visual C++ 2012运行时库?

编辑:似乎有一个非常相似的问题针对另一个版本的Visual Studio,但很少得到关注。


2
指出它们存在于你没有的VS版本中太明显了。 无论如何,你也不需要它们,只需将你机器上拥有的DLL文件复制到与你的EXE相同的目录中即可。 你需要msvcr110.dll和可能的msvcp110.dll,在Windows目录中找到它们(64位版本为system32,32位版本为syswow64)。 - Hans Passant
1个回答

7
你可以通过修改项目文件并复制一些文件来完成此操作。下面的示例是关于在Visual Studio 2013中使用Visual C++ 2012运行库。如果你使用不同版本的Visual Studio或想要不同版本的Visual C++ Runtime库,你必须更改一些版本号。
首先,在你的项目文件中添加以下内容:
<ItemGroup>
  <BootstrapperPackage Include="Microsoft.Visual.C++.11.0.x64">
    <Visible>False</Visible>
    <ProductName>Visual C++ 2012 Runtime Libraries %28x64%29</ProductName>
    <Install>true</Install>
  </BootstrapperPackage>
</ItemGroup>

上面的示例是针对Visual C++ 2012 Runtime Libraries的64位版本。如果您想使用32位版本,应该将x64替换为x86。如果您想使用不同版本的C++库,您需要更改11.0版本号。此时,如果您打开项目并转到先决条件,您会注意到一个警告,即Visual Studio 2013找不到Visual C++ Runtime Libraries。要解决这个问题,您需要复制一些文件。
  1. 前往以下文件夹:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages。如果您想要其他版本的C++ Runtime Libraries,则应更改v8.0a版本号。
  2. 将文件夹vcredist_x86复制到Visual Studio 2013使用的文件夹中:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper\Packages。确保您使用不同的名称以避免覆盖2013库。我使用了vcredist_x64.2012
此时,您可以打开您的解决方案并发布它。当用户安装您的应用程序时,他们将被要求同时安装C++ Runtime libraries。如果您的用户已经安装了应用程序,则他们需要重新安装,否则他们将无法得到安装C++ Runtime libraries的提示。
可能您的系统上没有C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages文件夹。我认为只有在安装Visual Studio 2012之外,还安装了Visual Studio 2013时才会得到此文件夹。如果您知道可以直接下载文件而无需安装Visual Studio 2012,则可以随意编辑此问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接