繁体   English   中英

用VS2015创建的ASP.Net核心Web应用程序(.Net Framework)创建了一个看上去很狡猾的项目

[英]ASP.Net Core Web Application (.Net Framework) created with VS2015 creates a dodgy looking project

我正在使用ASP.Net Core创建一个应用程序,它只是一个用于测试各种技术的原型atm。 我需要使用Dotnet Framework而不是Dotnet Core。 (原因之一是我需要Dotnet Framework对COM互操作的支持)。

我在Win7 x64上运行VS2015 Update 3。

我选择File-> New-> Project,然后在New Project对话框中,在Dotnet version下拉列表中选择.Net Framework 4.6,然后从项目树中选择Web->'ASP.Net Core Web Application(.Net Framework)'创建一个新的Web应用程序。

它可以构建和运行,但是我不完全了解已创建项目的配置。

该项目使用project.json文件而不是packages.config。 我认为这是我理解的,因为ASP.Net Core要求使用Nuget 3而不是Nuget 2。

我不明白的是,当我在输出目录中构建项目时,我有一个子目录./net46/win7-x64,确实有一些奇怪的东西。

libuv.dll和Microsoft.AspNetCore的负载。<whatever>是有意义的,Asp.Net不是Dotnet Framework的一部分,因此nuget可以解决该依赖关系并将其复制到我的输出目录中。 但是我也有很多负担。 我的输出目录中的程序集。 那在那里做什么? 我的应用程序内部不使用nuget,那么为什么需要将其作为依赖项提供?

同样令人困惑的是System。<whatever>程序集的负载,例如System.Threading.Thread.dll v1.0.24212.1。 现在,Dotnet Framework没有System.Threading.Thread.dll,它具有System.Threading.dll v4.6.1085.0。

这些System。<whatever> dll实际上是Dotnet Core库(它们与c:\\ Program Filess \\ dotnet \\ shared中的程序集匹配),但是此项目是使用应该使用Dotnet Framework 而不是 Dotnet Core的项目向导创建的,因此这些Dotnet Core程序集在我的输出目录中做什么?

我怀疑问题与部署模式有关。 Dotnet Core具有两种部署模式。 框架依赖且自成体系。 依赖于框架意味着应用程序不会交付它自己的Dotnet Core程序集,而是对已经安装在目标计算机上的Dotnet Core进行答复并使用它。 自包含的意味着应用程序附带了它自己的所有Dotnet Core依赖项。

但这提出了两个问题。 依赖框架和自包含框架是Dotnet Core部署模式,1)文档中没有任何内容表明它们与使用Dotnet Framework的应用程序有任何关系,并且2)文档指出“框架依赖”是默认设置,但这似乎不是,我也没有做任何更改。

https://docs.microsoft.com/zh-cn/dotnet/articles/core/deploying/index

为了使用Dotnet Framework创建ASP.Net Core应用程序,我希望有一个引用了一些额外Microsoft.AspNetCore的应用程序。 库复制到其输出,但是我实际拥有的是完全不同的东西,我不知道为什么。

谁能对此有所启发?

更新:添加了project.json以供参考。

{
  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net46": { }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

输出路径中的程序集基于将运行您的应用程序的平台。

根据您的情况,您正在创建一个ASP.NET Core Web应用程序(.NET Framework),它是一个.NET Framework应用程序,并且需要在Windows计算机上安装.NET Framework才能运行该应用程序。

这种类型的项目需要.NET Core程序集,并且这些与.NET Core相关的程序集称为程序包。 这些程序集存储在Win7-x64文件夹中,这意味着这些程序集将由Win7 x64计算机中的.NET Framework调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM