新的csproj文件结构能否用于ASP.NET Framework项目?
新的.csproj格式包括对经典文件的一些重大改进,包括与NuGet包管理的紧密集成,以及显著减少详细的结构。我希望在仍然使用.NET Framework 4.6和ASP.NET的同时获得这些好处(因为我的项目依赖于Umbraco,而Umbraco尚未生成.NET核心版本) 最大的挑战似乎是调试体验-ASP.NET核心项目希望运行dotnet核心应用程序并设置IIS实例的反向代理。这个过程与.NETFramework模型完全不同,我不知道从哪里开始尝试在VisualStudio中设置调试新的csproj文件结构能否用于ASP.NET Framework项目?,asp.net,asp.net-core-2.0,csproj,Asp.net,Asp.net Core 2.0,Csproj,新的.csproj格式包括对经典文件的一些重大改进,包括与NuGet包管理的紧密集成,以及显著减少详细的结构。我希望在仍然使用.NET Framework 4.6和ASP.NET的同时获得这些好处(因为我的项目依赖于Umbraco,而Umbraco尚未生成.NET核心版本) 最大的挑战似乎是调试体验-ASP.NET核心项目希望运行dotnet核心应用程序并设置IIS实例的反向代理。这个过程与.NETFramework模型完全不同,我不知道从哪里开始尝试在VisualStudio中设置调试 有没有
有没有办法让这两个项目模型混合使用?GitHub上有一系列关于支持ASP.NET(非核心)应用程序的新csproj格式的未决问题。其中一些:
- mvcapapplication.csproj
- mvcapapplication.csproj.user
- packages.config
<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>
b。使用IIS进行调试
在IIS管理器中,创建指向项目所在目录的应用程序。现在,您可以通过附加到w3wp.exe
进程来调试应用程序<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<OutputType>Library</OutputType>
<OutputPath>bin\</OutputPath>
<TargetFramework>net48</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<PublishProfileImported>true</PublishProfileImported>
</PropertyGroup>
<ItemGroup>
<ProjectCapability Include="DotNetCoreWeb" />
<ProjectCapability Include="SupportsSystemWeb" />
</ItemGroup>
<!-- add your packagereference/content/etc includes here -->
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<!-- order is important! -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
</Project>
图书馆
垃圾箱\
网络48
假的
真的
15
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
一切正常
- visual studio使用正确的applicationhost.config启动iisexpress的正常运行和调试体验。如果在launchsettings中填写sslport,它甚至可以与ssl一起工作
- 正常的编辑和调试体验,无任何红色扭曲,并可使用intellisense/autocomplete
唯一似乎仍然缺少的是右键单击部署功能。。。但当您可以使用
msbuild/p:DeployOnBuild=True
进行部署时,我终于看不到任何阻止我升级的东西了。您现在关注的是一个IIS web项目,而不是任何控制台.net framework应用程序?这个问题很酷,我还没有尝试过,但我认为这可能奏效。据我所知,“新”项目结构被.prop
文件完全重写为旧结构。除非旧标签无效,否则这仍然有效。至少对于控制台和类项目是明确的。这是明确的:我可以在使用新的.csproj文件格式的同时从Visual Studio中获得一个ASP.NET Framework项目来构建和调试吗?如果有些东西也适用于控制台应用程序和其他托管机制,那也很好。这符合您的场景吗?这个链接解释了一些有和没有这样做:这是一个很好的使用IIS Express的方法。作为一个完美的解决方案,唯一缺少的是ASP.NET Core如何使用“wwwroot”文件夹来包含所有静态资产,其中仍然使用项目根。我假设在启动应用程序时更改/path
开关就是一个答案。我不确定我是否正确理解了您的意思。是的,ASP.NET Core更改了静态文件的处理,现在所有静态内容都驻留在中。默认情况下,它只是ASP.NET核心Web主机使用的位置。但是,它与csproj文件结构无关。由于我们讨论了ASP.NET(非核心),wwwroot
在这里不起作用。所有ASP.NET静态内容文件夹(如内容
,字体
,脚本
)在项目目录和部署的应用程序目录中都具有相同的相对位置。这似乎也破坏了web发布-现在似乎只提供了一个文件夹目标,不是像WebDeploy这样的东西。有人通过命令行部署了它吗dotnet发布
似乎无法生成有效的输出。在iis express中运行时,示例项目给了我一个403错误。false
和bin
是我的iis找不到DLL的原因。IIS查看\bin
而不是\bin\DebugOrRelease\net451
+1如果这个问题是在2020/2021年提出的,这应该是公认的答案!但愿我先读过。我需要为我的项目添加
和
。
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<OutputType>Library</OutputType>
<OutputPath>bin\</OutputPath>
<TargetFramework>net48</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<PublishProfileImported>true</PublishProfileImported>
</PropertyGroup>
<ItemGroup>
<ProjectCapability Include="DotNetCoreWeb" />
<ProjectCapability Include="SupportsSystemWeb" />
</ItemGroup>
<!-- add your packagereference/content/etc includes here -->
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<!-- order is important! -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
</Project>