Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新的csproj文件结构能否用于ASP.NET Framework项目?_Asp.net_Asp.net Core 2.0_Csproj - Fatal编程技术网

新的csproj文件结构能否用于ASP.NET Framework项目?

新的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中设置调试 有没有

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

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


有没有办法让这两个项目模型混合使用?

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

您可能已经了解到,ASP.NET应用程序还不支持新的csproj格式。这是可能的,使其工作,但它不会顺利

不久前,我尝试以新的csproj格式创建ASP.NET MVC项目,只是为了好玩。我成功了,但是我没有经常玩它。所以了解你的经历会很有趣

步骤如下:

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

    • mvcapapplication.csproj
    • mvcapapplication.csproj.user
    • packages.config
  • 使用以下内容创建新的mvcapapplication.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>
    
    b。使用IIS进行调试

    在IIS管理器中,创建指向项目所在目录的应用程序。现在,您可以通过附加到
    w3wp.exe
    进程来调试应用程序

  • 这是。它基本上是默认的ASP.NET MVC项目,按照上述步骤迁移到新的csproj格式。它可以被编译、执行和调试(包括IIS Express的配置文件)

    关于这一点,我关注的是,发布的最新评论添加了最后缺失的部分。基本上,对于这样的.csproj文件:

    <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>