我有一个在VS2010中构建的c#项目。它通过COM引用C++项目,这也是解决方案的一部分。上周五,我进行了一次成功的构建,更改了一行代码,进行了另一次构建,然后我开始收到关于.NET的错误。
项目中的.NET框架的目标版本与.NET框架启动条件版本'.NET Framework3.5‘不匹配。在高级编译选项对话框(VB)或应用程序页(C#、F#)中更新.NET框架启动条件的版本,以匹配.NET框架的目标版本。
我还检查了我的安装程序的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中的代码与此进行了比较,它们看起来是一样的。
我已经找到了几个关于这个问题的帖子,包括一个非常好的here,但它们都没有帮助我解决这个问题。任何建议都会很有帮助。
编辑
我把所有东西都改成了.NET 4.0,只是为了看看它是否有所不同,然后这个项目就成功构建了。我把它改回来了,它又一次给出了.NET版本错误。我检查了vdproj文件中的任何"4.0“引用,发现它只适用于AspNetVersion,在安装程序的x86版本中也会出现这种情况。
"AspNetVersion" = "8:4.0.30319.0"
我需要发布.NET 3.5,所以这只是一个练习,看看将版本更改为其他版本是否可以解决问题。
发布于 2013-04-03 08:07:14
事实证明,出于某种原因,C++代码也与.NET关联。我使用this文章帮助我将c++ .NET版本从4.0改为3.5。基本步骤是
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
下创建
通用属性并确认版本为3.5
<代码>H123确保平台工具集设置为V90<代码>H224<代码>G225
发布于 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的启动条件编辑器图标描述。
发布于 2013-11-02 02:16:31
有同样的问题,因为这个项目已经从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框架。
很难找到它,您必须单击Prerequisites按钮。
https://stackoverflow.com/questions/15770318
复制相似问题