6

我有一个通过 ClickOnce 部署的 .NET 4.5.2 应用程序。它使用Magick.NET库,它需要 Visual C++ Redistributable for Visual Studio 2012。我已经尝试使用 2013 包,但它仍然需要 2012 版本才能工作。不幸的是,Visual Studio 2013 中可能的先决条件下列出的唯一版本是 2013 版本。其他版本找不到了:

Visual Studio 2013 ClickOnce 先决条件窗口

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

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

4

1 回答 1

7

您可以通过破解您的项目文件并复制一些文件来完成此操作。下面的示例用于在 Visual Studio 2013 中使用 Visual C++ 2012 运行时库。如果您使用不同版本的 Visual Studio 或想要不同版本的 Visual C++ 运行时库,则必须更改一些版本号。

首先将以下内容添加到您的项目文件中:

<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>

上面的示例适用于 64 位版本的 Visual C++ 2012 运行时库。如果要使用 32 位版本,则应将 x64 替换为 x86。如果您想使用不同版本的 C++ 库,则必须更改 11.0 版本号。如果此时打开项目并转到先决条件,您会注意到 Visual Studio 2013 找不到 Visual C++ 运行时库的警告。要解决此问题,您需要复制一些文件。

  1. 转到以下文件夹:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages。如果您想要不同版本的 C++ 运行时库,您应该更改 v8.0a 版本号。
  2. 将文件夹vcredist_x86复制到 Visual Studio 2013 使用的文件夹:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper\Packages。确保使用不同的名称以避免覆盖 2013 库。我使用了 vcredist_x64.2012

此时,您可以打开您的解决方案并发布您的解决方案。当用户安装您的应用程序时,他们将被要求安装 C++ 运行时库。如果您的用户已经安装了应用程序,他们将需要重新安装,否则他们将不会收到安装 C++ 运行时库的问题。

您的系统上可能没有C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages文件夹。我认为除了 Visual Studio 2013 之外,您只有在安装 Visual Studio 2012 时才会获得此文件夹。如果您知道可以在哪里下载文件而无需安装 Visual Studio 2012,请随时编辑此问题。

于 2015-05-01T07:38:55.983 回答