41

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

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

  • 项目 -> 属性 -> 应用程序 -> 目标框架(对于调试和发布中的每个项目)
  • 项目 -> 属性 -> 发布 -> 先决条件(确认 .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 发布,所以这只是一个练习,看看将版本更改为其他版本并返回是否可以解决问题。

4

6 回答 6

84

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

1) 选择安装项目

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

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

4) 构建和安装。

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

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

执行以下步骤:

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

2) 单击“先决条件”按钮。

3) 根据需要进行更改。

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

于 2015-10-12T10:31:26.223 回答
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>

此外,我发现您只需右键单击安装和部署项目,点击属性,转到先决条件,然后选择正确的 .NET 框架。

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

于 2013-11-01T18:16:31.013 回答
4

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

于 2020-02-10T09:54:16.627 回答
3

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

于 2019-02-12T09:56:24.510 回答
2
  • 在主菜单上选择“项目”
  • 选择选项“属性”
  • 将打开一个表单,选择“构建”,单击“先决条件”按钮,选择您的 .Net 版本。
于 2020-03-15T21:59:06.310 回答