方法: 自動バインド リダイレクトを有効および無効にする
Note
この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含め、.NET の新しい実装には適用されません。
.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
] \(SSL 有効) を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.config) ファイルを Web アプリ用に変更する必要があるため、バインド リダイレクトは構成ファイルに自動的に追加されません。 ただし、Visual Studio によってバインドの競合が通知されるため、バインド リダイレクトを追加して競合を解決できます。 バインド リダイレクトを追加するかどうかの確認メッセージは常に表示されるため、Web アプリのこの機能を明示的に無効にする必要はありません。
web.config ファイルにバインド リダイレクトを追加するには:
Visual Studio で、アプリをコンパイルし、ビルドの警告を確認します。
アセンブリ バインドの競合がある場合、警告が表示されます。 警告をダブルクリックするか、警告を選択して Enter キーを押します。
ソース web.config ファイルに必要なバインド リダイレクトを自動的に追加できるダイアログ ボックスが表示されます。
関連項目
.NET