关于支持ASP的新csproj格式,GitHub上有很多悬而未决的问题.NET(非核心)应用程序.其中一些:
正如您可能已经理解的,ASP还不支持新的csproj格式.NET应用程序.这是有可能的,但它不会顺利.
不久前,我try 创建ASP.NET MVC项目,新的csproj格式,只是为了好玩.我成功了,但是我没有经常玩它.所以了解你的经历会很有趣.
步骤如下:
删除旧的不需要的项目文件:
- MVC应用程序.项目文件
- MVC应用程序.项目文件.user
- packages.config
新建MVC应用程序.项目文件,内容如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Antlr" version="3.4.1.9004" />
<PackageReference Include="bootstrap" version="3.0.0" />
<PackageReference Include="jQuery" version="1.10.2" />
<PackageReference Include="jQuery.Validation" version="1.11.1" />
<PackageReference Include="Microsoft.ApplicationInsights" version="2.2.0" />
<PackageReference Include="Microsoft.ApplicationInsights.Agent.Intercept" version="2.0.6" />
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" version="2.2.0" />
<PackageReference Include="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.2.0" />
<PackageReference Include="Microsoft.ApplicationInsights.Web" version="2.2.0" />
<PackageReference Include="Microsoft.ApplicationInsights.WindowsServer" version="2.2.0" />
<PackageReference Include="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.2.0" />
<PackageReference Include="Microsoft.AspNet.Mvc" version="5.2.3" />
<PackageReference Include="Microsoft.AspNet.Razor" version="3.2.3" />
<PackageReference Include="Microsoft.AspNet.Web.Optimization" version="1.1.3" />
<PackageReference Include="Microsoft.AspNet.WebPages" version="3.2.3" />
<PackageReference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.5" />
<PackageReference Include="Microsoft.CSharp" Version="4.4.1" />
<PackageReference Include="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" />
<PackageReference Include="Microsoft.Net.Compilers" version="2.1.0" developmentDependency="true" />
<PackageReference Include="Microsoft.Web.Infrastructure" version="1.0.0.0" />
<PackageReference Include="Modernizr" version="2.6.2" />
<PackageReference Include="Newtonsoft.Json" version="6.0.4" />
<PackageReference Include="Respond" version="1.2.0" />
<PackageReference Include="WebGrease" version="1.5.2" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="System.Web" />
</ItemGroup>
<ItemGroup>
<Compile Update="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="Web.config">
<SubType>Designer</SubType>
</Content>
<Content Include="Web.*.config">
<DependentUpon>Web.config</DependentUpon>
<SubType>Designer</SubType>
</Content>
</ItemGroup>
</Project>
上面的长包列表包括为默认ASP.NET MVC应用程序添加的默认包.您应该添加应用程序使用的其他包.
不要忘记添加Microsoft.CSharp
程序包,否则在ViewBag
个作业(job)中会出现以下编译错误:
错误CS0656:缺少编译器必需的成员
‘Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create’
在ASP.NET项目,添加Microsoft.CSharp
作为该项目的参考.但最好将其作为NuGet软件包使用.
唯一不能避免的直接引用是System.Web
.
调试项目
你说得对,调试可能会很痛苦.因为VisualStudio不知道它是ASP.NET应用程序,没有启动调试会话的即时方法.
我在这里看到了两种可能的解决方案:
a、 使用IIS Express进行调试.
基于IIS Express可执行文件配置调试相当容易.只需创建以下调试配置文件:
对应的LaunchSettings.json:
{
"profiles": {
"ASP.NET Old csproj": {
"commandName": "Executable",
"executablePath": "c:\\Program Files\\IIS Express\\iisexpress.exe",
"commandLineArgs": "/path:\"$(SolutionDir)$(ProjectName)\" /port:12345"
}
}
b、 使用IIS进行调试.
在IIS管理器中,创建指向项目所在目录的应用程序.现在,您可以通过附加到w3wp.exe
进程来调试应用程序.
这是Sample Project on GitHub美元.它基本上是默认的ASP.NET MVC项目按照上述步骤迁移到新的csproj格式.它可以被编译、执行和调试(包括IIS Express的配置文件)