![](/img/trans.png)
[英]Is it possible to run a ASP.NET web project created in VS2015 on VSCode OSX?
[英]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.