VS 2010で作成しているc#プロジェクトがあります。これは、ソリューションの一部でもあるCOMを介してC++プロジェクトを参照します。先週の金曜日、私はビルドを成功させ、コードの1行を変更し、別のビルドを作成しました。そして、.NETに関するエラーを受け取り始めました。
プロジェクトの.NET Frameworkのターゲットバージョンは、.NET Framework起動条件バージョン '.NET Framework 3.5'と一致しません。 [高度なコンパイルオプション]ダイアログボックス(VB)またはアプリケーションページ(C#、F#)の.NET Frameworkのターゲットバージョンに一致するように、.NET Framework起動条件のバージョンを更新します。
また、インストーラーのvdprojコードを確認し、起動条件が.NET 3.5であることを確認しました。
"ComponentsUrl" = "8:"
"Items"
{
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"
{
"Name" = "8:.NET Framework 3.5 SP1"
"ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"
}
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
{
"Name" = "8:Windows Installer 3.1"
"ProductCode" = "8:Microsoft.Windows.Installer.3.1"
}
}
"ComponentsUrl" = "8:"
"Items"
{
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"
{
"Name" = "8:.NET Framework 3.5 SP1"
"ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"
}
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
{
"Name" = "8:Windows Installer 3.1"
"ProductCode" = "8:Microsoft.Windows.Installer.3.1"
}
}
"LaunchCondition"
{
"{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_799EF2A78D074B669D0B30310FD56A67"
{
"Name" = "8:.NET Framework"
"Message" = "8:[VSDNETMSG]"
"FrameworkVersion" = "8:.NETFramework,Version=v3.5"
"AllowLaterVersions" = "11:FALSE"
"InstallUrl" = "8:http://go.Microsoft.com/fwlink/?LinkId=131000"
}
}
X86とx64の両方のコンパイラ用にビルドするので、2つのセットアッププロジェクトがあります。 x86プロセッサ用の2番目のものは、.NETエラーを受け取りません。 vdprojのコードをこれと比較しましたが、見た目は同じです。
非常に良いものを含むこの問題に関するいくつかのスレッドを見つけました here 、しかしそれらのどれも私がこの問題を解決するのを助けませんでした。任意の提案が役立ちます。
[〜#〜] edit [〜#〜]
違いが生じるかどうかを確認するためだけにすべてを.NET 4.0に変更し、プロジェクトが正常にビルドされました。元に戻したところ、再び.NETバージョンエラーが発生しました。 vdprojファイルの「4.0」参照を確認し、AspNetVersionのみを見つけました。これは、動作するインストーラのx86バージョンでも発生しました。
"AspNetVersion" = "8:4.0.30319.0"
.NET 3.5でリリースする必要があるため、これはバージョンを別のバージョンに変更して元に戻すことで問題が解決するかどうかを確認するための演習に過ぎませんでした。
何らかの理由でC++コードも.NETに関連付けられていたことがわかりました。 this の記事を使用して、c ++ .NETバージョンを4.0から3.5に変更しました。基本的な手順は
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
UI(テキストエディターではない)を使用して変更します。 here から取得。
1)インストーラープロジェクトを選択します
2)Solution ExplorerまたはSolution Navigatorで、「Launch Conditions Editor」パネルの上部にあるアイコンをクリックします(VS2010では双眼鏡のアイコン、VS2015およびVS2017ではアイコンはその前にフィルターがある用紙です(コメントでMatとBob Van de Vijverにコメントしてください)。
3)[起動条件]で、[プロパティ]の右側にある[.Netフレームワーク]を選択します。[バージョン]を選択すると、ドロップダウンが表示されます。フレームワークをターゲットフレームワークに変更します。
4)ビルドしてインストールします。
その後、次のようなメッセージが表示された場合:
警告:.NET Frameworkの起動条件 '.NET Framework 4'のバージョンは、選択した.NET Frameworkブートストラップパッケージと一致しません。 [前提条件]ダイアログボックスで選択した.NET Frameworkのバージョンに一致するように、.NET Frameworkの起動条件を更新します。
次の手順を実行します。
1)インストーラープロジェクトを右クリックし、[プロパティ]をクリックします。
2)[前提条件]ボタンをクリックします。
3)必要に応じて変更します。
編集:VSの異なるバージョンの起動条件エディターアイコンの説明をコメントに従って更新しました。
このプロジェクトが2008年から2010年に変換されたのと同じ問題がありました。
ブートストラップを変更するには、.csprojを開き、その中の3.5からインスタンスを手動で削除しました。
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
また、セットアップと展開プロジェクトを右クリックし、プロパティをクリックして、前提条件に移動し、正しい.NETフレームワークを選択できることもわかりました。
見つけるのが難しかったので、[前提条件]ボタンをクリックする必要があります。
私も同じ問題に直面していましたが、ターゲットフレームワークがすべての場所で異なるというミスを犯しました。Uは、下記の場所で同じフレームワークを選択する必要があることを確認できます。VS2015を使用しています。配置1-プロジェクト->プロパティ->アプリケーション->ターゲットフレームワーク(.Net framework 4)を右クリックして、プロジェクトに応じて選択できます。配置2-インストーラープロジェクトを右クリック->プロパティ->前提条件-> Microsoftフレームワーク4(X86およびX64)を選択します(ターゲットとするフレームワークによって異なります)。場所3-インストーラープロジェクトを右クリック->ビューをクリック->起動条件-> .net Framework->右クリックプロパティ->選択> net framework 4。 2015年になります。