41

VS 2010 でビルドしている ac# プロジェクトがあります。これは、ソリューションの一部でもある COM を介して C++ プロジェクトを参照します。先週の金曜日にビルドを成功させ、コードを 1 行変更して別のビルドを作成したところ、.NET に関するエラーが発生し始めました。

プロジェクト内の .NET Framework のターゲット バージョンが、.NET Framework 起動条件のバージョン '.NET Framework 3.5' と一致しません。[高度なコンパイル オプション] ダイアログ ボックス (VB) またはアプリケーション ページ (C#、F#) で、.NET Framework の起動条件のバージョンをターゲット バージョンの .NET Framework と一致するように更新します。

  • プロジェクト -> プロパティ -> アプリケーション -> ターゲット フレームワーク (デバッグとリリースの両方のプロジェクトごと)
  • Project -> Properties -> Publish -> Prerequisites (.NET 3.5 および Windows Installer 3.1 を確認済み)
  • セットアップ -> 起動条件 -> .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 つのセットアップ プロジェクトがあります。2 番目の x86 プロセッサの場合、.NET エラーは発生しません。vdproj のコードをこれと比較しましたが、同じように見えます。

この問題に関するいくつかのスレッドを見つけました。ここには非常に優れたスレッドが含まれていますが、いずれもこの問題の解決に役立ちませんでした。どんな提案も役に立ちます。

編集

すべてを .NET 4.0 に変更して違いがあるかどうかを確認したところ、プロジェクトが正常にビルドされました。元に戻したところ、.NET バージョン エラーが再度表示されました。vdproj ファイルで「4.0」参照を確認したところ、動作する x86 バージョンのインストーラーでも発生した AspNetVersion のみが見つかりました。

"AspNetVersion" = "8:4.0.30319.0"

.NET 3.5 でリリースする必要があるため、これは、バージョンを別のものに変更して元に戻すことで問題が解決するかどうかを確認するための単なる演習でした。

4

6 に答える 6

10

何らかの理由で、C++ コードも .NET に関連付けられていたことが判明しました。この記事を使用して、c++ .NET バージョンを 4.0 から 3.5 に変更しました。基本的な手順は次のとおりです。

  1. テキスト エディターで C++ プロジェクト vcxproj を開きます。
  2. 探す<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    • これは、Globals PropertyGroup の下に作成する必要がある場合があります
  3. 4.0 を 3.5 に変更
  4. VS でプロジェクトを開く
  5. C++ プロジェクトを右クリックし、プロパティを選択します
  6. Common Properties を選択し、バージョンが 3.5 であることを確認します
  7. [構成プロパティ] -> [全般] を選択します
  8. プラットフォーム ツールセットが v90 に設定されていることを確認します
于 2013-04-03T00:07:14.063 に答える
4

このプロジェクトが 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>

また、Setup and Deployment プロジェクトを右クリックし、プロパティをクリックして、前提条件に移動し、正しい .NET フレームワークを選択できることもわかりました。

それを見つけるのは困難でした。前提条件ボタンをクリックする必要があります。

于 2013-11-01T18:16:31.013 に答える