gpt4 book ai didi

asp.net - 新的 csproj 文件结构是否可以与 ASP.NET Framework 项目一起使用?

转载 作者:行者123 更新时间:2023-12-02 07:28:14 28 4
gpt4 key购买 nike

新的 .csproj 格式对经典文件进行了一些重大改进,包括与 NuGet 包管理的紧密集成以及明显简洁的结构。我希望在仍然使用 .NET Framework 4.6 和 ASP.NET 的同时获得这些好处(因为我的项目依赖于尚未生成 .NET Core 版本的 Umbraco)。

最大的挑战似乎是调试体验 - ASP.NET Core 项目期望运行 dotnet core 应用程序并设置 IIS 实例的反向代理。此过程与 .NET Framework 模型完全不同,我不知道从哪里开始尝试在 Visual Studio 中设置调试。

有什么办法可以混合这两个项目模型吗?

最佳答案

GitHub 上有很多关于 ASP.NET(非 Core)应用程序的新 csproj 格式支持的未决问题。其中一些:

您可能已经了解,ASP.NET 应用程序尚不支持新的 csproj 格式。有可能让它发挥作用,但不会一帆风顺。

前一段时间,我尝试以新的 csproj 格式创建 ASP.NET MVC 项目,只是为了好玩。我成功了,但我并没有经常使用它。因此了解您的经历将会很有趣。

步骤如下:

  1. 删除旧的不需要的项目文件:

    • MvcApplication.csproj
    • MvcApplication.csproj.user
    • packages.config
  2. 使用以下内容创建新的 MvcApplication.csproj:

    <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 分配中收到以下编译错误:

    error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'

    在 ASP.NET 项目中,Microsoft.CSharp 添加为项目的引用。但最好将其作为 NuGet 包使用。

    唯一无法避免的直接引用是System.Web

  3. 调试项目

    当你说调试可能很痛苦时,你是对的。由于 Visual Studio 不知道它是 ASP.NET 应用程序,因此没有立即启动调试 session 的方法。

    我在这里看到两种可能的解决方案:

    a.使用 IIS Express 进行调试。

    基于 IIS Express 可执行文件配置调试非常容易。只需创建以下调试配置文件:

    enter image description here

    对应的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 。它基本上是按照上述步骤迁移到新的 csproj 格式的默认 ASP.NET MVC 项目。它可以被编译、执行和调试(包括 IIS Express 的配置文件)

关于asp.net - 新的 csproj 文件结构是否可以与 ASP.NET Framework 项目一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47915353/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com