Asp.net core VS2017发布针对完整框架的核心Web Api

Asp.net core VS2017发布针对完整框架的核心Web Api,asp.net-core,msbuild,visual-studio-2017,Asp.net Core,Msbuild,Visual Studio 2017,发布.Net核心Web Api项目(依赖于框架的部署) 如果我的目标是Full Frameworkie net456,这将在net462文件夹下的bin\Release WebApp.csproj WebApp.csproj net462 2.如果我的目标是Core1.1ie netcoreapp1.1,这将仅发布netcoreapp1.1文件夹下bin\Release WebApp.csproj netcoreapp1.1 这种行为的原因是什么 您可能正在查找错误的文件夹,发布

发布.Net核心Web Api项目(
依赖于框架的部署

  • 如果我的目标是
    Full Framework
    ie net456,这将在
    net462
    文件夹下的
    bin\Release

    WebApp.csproj
    
    WebApp.csproj

    
    net462
    
  • 2.如果我的目标是
    Core1.1
    ie netcoreapp1.1,这将仅发布
    netcoreapp1.1
    文件夹下
    bin\Release

    WebApp.csproj
    
    
    netcoreapp1.1
    


    这种行为的原因是什么

    您可能正在查找错误的文件夹,发布的输出应位于
    bin\Release\netcoreapp1.1\publish

    正常生成输出不包含DLL,因为.NET Core可以从全局NuGet packages缓存中查找引用的DLL。
    .runtimeconfig.json
    将指定此缓存在您的计算机上的位置,因此无需为每个生成复制DLL

    但是.NET Framework没有此逻辑,因此需要将DLL复制到生成输出

    此外,在.NET Core 2.0中,您将用于ASP.NET Core应用程序的大多数NuGet包都是.NET Core 2.0中包含的运行时包存储的一部分,因此您将只发布不属于此存储的程序集。
    由于此存储不可用于.NET Framework,因此此机制不能用于.NET Framework应用程序,并且所有程序集都是已发布输出的一部分。

    您知道为什么它会这样设计吗,因为在FDD中,我希望发布文件夹中只包含project DLL。顺便说一句,VS2017不会在
    Release\[framework]
    yes下生成发布文件夹,而VS2017会在
    Release
    下使用其他
    PublishOutput
    文件夹或类似文件夹。发布结果包括能够运行的项目的完全依赖项关闭。这意味着包含了不属于运行时和运行时存储的所有内容。