如何:啟用和停用自動繫結重新導向
注意
本文專屬於 .NET Framework。 其不適用於較新的 .NET 實作,包括 .NET 6 和更新版本。
當您在以 .NET Framework 4.5.1 和更新版本為目標的 Visual Studio 中編譯桌面應用程式時,繫結重新導向可能會自動新增至應用程式組態檔以覆寫組件對應轉換。 如果您的應用程式或其元件參考相同組件的多個版本,即使您在應用程式的組態檔中手動指定繫結重新導向,仍會加入繫結重新導向。 自動繫結重新導向功能會影響以 .NET Framework 4.5.1 或更新版本為目標的桌面應用程式。 如果您尚未明確啟用或停用自動產生的繫結重新導向,而且升級現有的專案,則會自動啟用該功能。
對於 Web 應用程式,當 Visual Studio 遇到繫結衝突時,它會提示您新增繫結重新導向以解決衝突。
您可以針對以舊版 .NET Framework (4.5 和更早版本) 為目標的現有應用程式啟用自動繫結重新導向。 如果您想要手動撰寫繫結重新導向,可以停用此功能。
重要
從 Visual Studio 2022 開始,Visual Studio 不再包含 .NET Framework 4.0 - 4.5.1 的 .NET Framework 元件,因為這些版本不再受到支援。 Visual Studio 2022 和更新版本無法建置以 .NET Framework 4.0 到 .NET Framework 4.5.1 為目標的應用程式。 若要繼續建置這些應用程式,您可以使用 Visual Studio 2019 或更早版本。
在桌面應用程式中停用自動繫結重新導向
在以 .NET Framework 4.5.1 和更新版本為目標的 Windows 桌面應用程式中,預設會啟用自動繫結重新導向。 編譯應用程式時,繫結重新導向會新增至輸出組態 (app.config) 檔案。 重新導向會覆寫可能發生的組件對應轉換。 來源 app.config 檔案不會遭到修改。 您可以修改應用程式的專案檔,或取消選取 Visual Studio 中專案屬性的核取方塊,來停用此功能。
透過專案屬性停用
如果您有 Visual Studio 2017 15.7 版本或更新版本,您可以在專案的屬性頁面中停用自動產生的繫結重新導向。
以滑鼠右鍵按一下 [方案總管] 中的專案,然後選取 [屬性]。
在 [應用程式] 頁面上,取消勾選 [自動產生繫結重新導向] 選項。
如果您沒有看到此選項,則必須手動停用專案檔中的功能。
按 Ctrl+S 以儲存變更。
在專案檔中手動停用
使用下列其中一個方法開啟專案檔進行編輯:
- 在 Visual Studio 中,選取 [方案總管] 中的專案,然後從捷徑功能表選擇 [在檔案總管中開啟資料夾]。 在 [檔案總管] 中尋找專案檔 (.csproj 或 .vbproj),然後在 [記事本] 中開啟它。
- 在 Visual Studio 的 [方案總管] 中,以滑鼠右鍵按一下專案,然後選擇 [卸載專案]。 再次以滑鼠右鍵按一下卸載的專案,然後選擇[編輯 [projectname.csproj]]。
在專案檔中尋找下列屬性項目:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
將
true
變更為false
:<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
手動啟用自動繫結重新導向
在以舊版 .NET Framework 為目標的現有應用程式中,或是當系統未自動提示您新增重新導向時,您可以啟用自動繫結重新導向。 如果您是以較新版 .NET Framework 為目標,但系統未自動提示您新增重新導向,您可能會取得建議您重新對應組件的組建輸出。
使用下列其中一個方法開啟專案檔進行編輯:
- 在 Visual Studio 中,選取 [方案總管] 中的專案,然後從捷徑功能表選擇 [在檔案總管中開啟資料夾]。 在 [檔案總管] 中尋找專案檔 (.csproj 或 .vbproj),然後在 [記事本] 中開啟它。
- 在 Visual Studio 的 [方案總管] 中,以滑鼠右鍵按一下專案,然後選擇 [卸載專案]。 再次以滑鼠右鍵按一下卸載的專案,然後選擇[編輯 [projectname.csproj]]。
將下列元素新增至第一個組態屬性群組 (位於 <PropertyGroup> 標記下方):
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
下面顯示已插入元素的元素檔範例:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{123334}</ProjectGuid> ... <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> </PropertyGroup> ... </Project>
編譯您的應用程式。
在 Web 應用程式中啟用自動繫結重新導向
在 Web 應用程式中,自動繫結重新導向是以不同的方式實作。 由於 Web 應用程式的來源組態檔 (web.config) 必須經過修改,因此繫結重新導向不會自動新增至組態檔。 不過,如果發生繫結衝突,Visual Studio 會通知您,那麼您就可以加入繫結重新導向來解決衝突。 由於系統一律提示您新增繫結重新導向,因此您不需要明確停用 Web 應用程式的這項功能。
若要將繫結重新導向新增至 web.config 檔:
在 Visual Studio 中編譯應用程式,並檢查是否有建置警告。
如果有組件繫結衝突,則會出現警告。 按兩下警告,或選取警告,然後按 Enter。
對話方塊隨即出現,可讓您將必要的繫結重新導向自動新增至來源 web.config 檔。