首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.NET框架的目标版本与启动条件不匹配

.NET框架的目标版本与启动条件不匹配
EN

Stack Overflow用户
提问于 2013-04-03 01:22:00
回答 6查看 42.4K关注 0票数 40

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

项目中的.NET框架的目标版本与.NET框架启动条件版本'.NET Framework3.5‘不匹配。在高级编译选项对话框(VB)或应用程序页(C#、F#)中更新.NET框架启动条件的版本,以匹配.NET框架的目标版本。

  • 项目->属性->应用程序->目标框架(对于调试和Release)
  • Project ->属性-> Publish ->系统必备中的每个项目(已确认的.NET 3.5和Windows Installer 3.1)
  • Setup ->启动条件-> .NET Windows ->属性->系统必备

我还检查了我的安装程序的vdproj代码,确认启动条件是.NET 3.5:

代码语言:javascript
复制
"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中的代码与此进行了比较,它们看起来是一样的。

我已经找到了几个关于这个问题的帖子,包括一个非常好的here,但它们都没有帮助我解决这个问题。任何建议都会很有帮助。

编辑

我把所有东西都改成了.NET 4.0,只是为了看看它是否有所不同,然后这个项目就成功构建了。我把它改回来了,它又一次给出了.NET版本错误。我检查了vdproj文件中的任何"4.0“引用,发现它只适用于AspNetVersion,在安装程序的x86版本中也会出现这种情况。

代码语言:javascript
复制
"AspNetVersion" = "8:4.0.30319.0"

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-04-03 08:07:14

事实证明,出于某种原因,C++代码也与.NET关联。我使用this文章帮助我将c++ .NET版本从4.0改为3.5。基本步骤是

  1. 在文本编辑器中打开c++项目vcxproj
  2. 查找<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    • 这可能需要在全局PropertyGroup

下创建

  1. Change 4.0 to 3.5
  2. 在VS
  3. 中打开项目右键单击c++项目并选择

通用属性并确认版本为3.5

  1. 选择配置属性->常规

<代码>H123确保平台工具集设置为V90<代码>H224<代码>G225

票数 10
EN

Stack Overflow用户

发布于 2015-10-12 18:31:26

通过UI (而不是文本编辑器)更改它。摘自here

1)选择安装程序项目

2)在解决方案资源管理器或解决方案导航器中,单击面板“启动条件编辑器”顶部的图标(在VS2010中是带望远镜的图标,在VS2015和VS2017中,图标是前面有过滤器的一张纸(在评论中向Mat和Bob Van de Vijver喊出)。

3)在启动条件下,选择右侧的".Net框架“,在”属性“中选择”版本“,您将看到一个下拉列表。将框架更改为目标框架。

4)构建并安装。

如果您随后收到类似以下内容的消息:

警告:.NET框架启动条件'.NET框架4‘的版本与所选的.NET框架引导程序包不匹配。更新.NET框架启动条件,使其与在“先决条件”对话框中选择的.NET框架版本相匹配。

执行以下步骤:

1)右键单击安装程序项目,然后单击“属性”。

2)点击“必备条件”按钮。

3)根据需要进行更改。

编辑:根据评论,更新了不同版本VS的启动条件编辑器图标描述。

票数 82
EN

Stack Overflow用户

发布于 2013-11-02 02:16:31

有同样的问题,因为这个项目已经从2008年转换到2010年。

为了更改引导程序,我打开了.csproj并手动删除了其中的3.5中的实例:

代码语言:javascript
复制
<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框架。

很难找到它,您必须单击Prerequisites按钮。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15770318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档