5

我有一個通過ClickOnce部署的.NET 4.5.2應用程序。它使用Magick.NET庫,該庫需要Visual Studio 2012的Visual C++可再發行組件。我已經使用2013軟件包進行了試用,但仍需要2012版才能使用。不幸的是,Visual Studio 2013中可能的先決條件下列出的唯一版本是2013版本。另一個版本是無處可尋:Visual Studio 2013中的VC++ 2012 Runtime Bootstrapper包在哪裏?

Visual Studio 2013 ClickOnce prerequisite window

怎樣包括在Visual C++ 運行時庫在Visual Studio 2013 的ClickOnce應用程序?

編輯:似乎有一個very similar question另一個版本的Visual Studio很少關注。

+2

指出它們存在在VS版本中你不會太明顯。您不需要它們,只需將您機器上的DLL複製到與EXE相同的目錄即可。您需要msvcr110.dll和可能的msvcp110.dll,在Windows目錄中找到它們(system32爲64位版本,syswow64爲32位版本)。 – 2015-04-06 13:32:22

回答

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> 

上面的例子是在Visual C++ 2012運行時庫的64位版本。如果你想使用32位版本,你應該用x86代替x64。如果您想使用不同版本的C++庫,則必須更改11.0版本號。如果此時打開項目並轉到先決條件,您將注意到Visual Studio 2013找不到Visual C++運行時庫的警告。要解決這個問題,你需要複製一些文件。

  1. 轉到以下文件夾:C:\ Program Files文件(x86)的\微軟的SDK \的Windows \ v8.0A \引導程序\軟件包。如果您需要不同版本的C++運行時庫,則應更改v8.0a版本號。
  2. 將文件夾複製vcredist_x86到的Visual Studio 2013採用了文件夾:C:\ Program Files文件(x86)的\微軟的SDK \的Windows \ v8.1A \引導程序\軟件包。確保使用不同的名稱來避免覆蓋2013年的圖書館。我用vcredist_x64.2012

此時您可以打開您的解決方案併發布您的解決方案。當用戶安裝你的應用程序時,他們會被要求安裝C++ Runtime庫。如果你的用戶已經安裝了應用程序,他們將需要重新安裝,否則他們不會得到安裝C++運行時庫的問題。

您的系統上可能沒有C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ Bootstrapper \ Packages文件夾。我想只有當您安裝Visual Studio 2013之外的其他Visual Studio 2012時,纔會獲得此文件夾。如果您知道在哪裏可以下載文件而無需安裝Visual Studio 2012,請隨時編輯此問題。

相關問題