繁体   English   中英

.NET Framework 的目标版本与启动条件不匹配

[英]Target Version of the .NET Framework does not match Launch Condition

我有我在 VS 2010 中构建的 ac# 项目。它通过 COM 引用了一个 C++ 项目,这也是解决方案的一部分。 上周五,我进行了一次成功的构建,更改了一行代码,又进行了一次构建,然后我开始收到有关 .NET 的错误消息。

项目中 .NET Framework 的目标版本与 .NET Framework 启动条件版本“.NET Framework 3.5”不匹配。 在高级编译选项对话框 (VB) 或应用程序页面(C#、F#)中更新 .NET Framework 启动条件的版本以匹配 .NET Framework 的目标版本。

  • 项目 -> 属性 -> 应用程序 -> 目标框架(针对 Debug 和 Release 中的每个项目)
  • 项目 -> 属性 -> 发布 -> 先决条件(确认 .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 编译器构建,我有两个安装项目。 第二个,对于 x86 处理器,没有得到 .NET 错误。 我已经将其 vdproj 中的代码与此进行了比较,它看起来是一样的。

我在这个问题上找到了几个线程,包括一个非常好的这里,但它们都没有帮助我解决这个问题。 任何的意见都将会有帮助。

编辑

我将所有内容都更改为 .NET 4.0 只是为了看看它是否有所作为,并且该项目已成功构建。 我把它改回来了,它又给了我 .NET 版本错误。 我检查了 vdproj 文件中是否有任何“4.0”参考,并且只找到了 AspNetVersion,它也出现在 x86 版本的安装程序中。

"AspNetVersion" = "8:4.0.30319.0"

我需要使用 .NET 3.5 发布,所以这只是一个练习,看看将版本更改为其他版本并返回是否可以解决问题。

通过 UI(不是文本编辑器)更改它。 取自这里

1) 选择安装项目

2) 在解决方案资源管理器或解决方案导航器中单击面板顶部的图标“启动条件编辑器”(在 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 的启动条件编辑器图标说明。

事实证明,出于某种原因,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

与该项目从 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 框架即可。

很难找到它,您必须单击先决条件按钮。

我也面临同样的问题。我犯了一个错误,目标框架在所有地方都不同。你可以验证在下面提到的地方应该选择相同的框架。我使用的是VS2015。 Place 1 - 右键单击​​Project-> Properties -> application -> target framework for me(.Net framework 4)您可以根据您的项目进行选择。 位置 2 - 右键单击​​安装程序项目 -> 属性 -> 先决条件 -> 为您选择 microsoft framework 4(X86 和 X64)这取决于您的目标框架。 位置 3 - 右键单击​​安装程序项目 -> 单击视图 -> 启动条件 -> .net Framework -> 右键单击​​属性 -> 选择 >net 框架 4. 我正在使用 Windows 服务并在从 vs 2010 更新时遇到这个问题到 2015.Hope 它会帮助你。

即使在上述所有地方设置了框架版本和安装项目先决条件之后。 错误继续出现。 然后我查看了安装项目文件,看到配置/调试部分下仍然提到了以前的 NET 框架版本,因此在 Visual Studio 中,我将编译模式设置回调试,重复相同的更改并为我清除了错误。

  • 在主菜单上选择“项目”
  • 选择选项“属性”
  • 将打开一个表单,选择“构建”,单击“先决条件”按钮,选择您的 .Net 版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM