【发布时间】:2017-01-14 15:29:42
【问题描述】:
我想在 Visual Studio 2013 中打开一个在 IIS 8.5 上运行的 ASP.NET 网站。我转到 打开 → 网站... 并导航到 Web 应用程序的文件夹。当我尝试打开它时,我收到一条错误消息,提示
Web 项目“FolderName”的目标是“.NETFramework,Version=v2.0”,这台机器上没有安装它。要继续,请在下面选择一个选项。
该网站之前从未在 Visual Studio 中打开过,因此没有与之关联的项目——没有用于定义目标框架的 .csproj 文件。该目录包含一个 .aspx 文件、一个 aspx.cs 文件、一个 aspx.designer.cs 文件和一个 web.config 文件。这些都没有定义任何目标框架。
还有一个 bin 目录,其中包含一个 .pdb、一个 .dll 和一个 .dll.config。 .dll.config 文件是一个 XML 文件,确实定义了一个目标框架,但版本是 4.5。以下是文件的全部内容:
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
那么,Visual Studio 从哪里确定它的目标是 .NET 2.0?
我唯一能想到的是,在同一台机器上,有一个 Visual Studio 项目,其根文件夹名称与 IIS Web 应用程序相同(与 IIS 文件不同的目录树分支中的子文件夹名称相同) .实际上,Web 应用程序是通过从 VS 项目中复制代码来创建的。但是 VS 项目的 .csproj 文件针对 .NET 4.5:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
[...]
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
[...]
</PropertyGroup>
另外,打开这个项目是没有问题的,所以显然 VS 并不认为它针对的是未安装的框架。执行网络应用程序也没有任何问题。
【问题讨论】:
-
顺便说一句,我决定冒险点击
OK,并选择第一个单选按钮Change the target to .NET Framework 4.5。但它在改变什么?目标从哪里开始定义为 .NET 2.0,又在哪里更改为定义为 .NET 4.5? VS 在我的个人资料的 Documents 中创建了一个名为 Visual Studio 2013\Projects\localhost_57273 的临时项目目录,但是这个目录是空的。
标签: asp.net visual-studio iis