C# 使用完整的.NET部署ASP.NET
如果我还使用.NET4.5.2中的一些库,我想知道是否可以部署我的asp.net核心应用程序 为了描述我的问题,我在我的应用程序中使用了来自full.NET的SyndicationFeed 在“框架”部分的project.json中,我有:C# 使用完整的.NET部署ASP.NET,c#,asp.net,iis,deployment,asp.net-core,C#,Asp.net,Iis,Deployment,Asp.net Core,如果我还使用.NET4.5.2中的一些库,我想知道是否可以部署我的asp.net核心应用程序 为了描述我的问题,我在我的应用程序中使用了来自full.NET的SyndicationFeed 在“框架”部分的project.json中,我有: "frameworks": { "net452": { "frameworkAssemblies": { "System.ServiceModel": "" }, "dependencies":
"frameworks": {
"net452": {
"frameworkAssemblies": {
"System.ServiceModel": ""
},
"dependencies": {
}
},
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
},
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
}
在其他部分中,我使用ASP.CORE软件包,如:
"Microsoft.EntityFrameworkCore.Design": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Hangfire.AspNetCore": "1.6.8",
还有更多
因此,问题是是否可以部署到IIS。我应该部署到使用ASP.CORE或full.NET运行的服务器。简言之:是的,这是可能的。但需要完整的.NET框架(在服务器上) 长话短说: 在
项目中有两个框架。json
在编译/发布期间有效地创建了两个不同的应用程序(一个用于net462
,另一个用于netcoreapp1.1
)。这是两个不同的应用程序,使用相同的源代码为不同的框架编译
要首先运行(对于net462),您需要安装了.NET Framework的计算机。对于其他(netcoreapp),您需要安装.NET Core。您不能“交换”(运行net462
-在.netcore
上构建应用程序,反之亦然)
但是看看你的project.json
,我真不敢相信你的应用程序编译成功了。你需要System.ServiceModel
才能让你的应用程序工作。但它只适用于net462。这意味着在编译过程中,第一个应用程序(对于net462)编译成功,而第二个应用程序(net netcoreapp)应该失败(未找到类、未找到命名空间等)
从项目/解决方案文件夹中的命令行运行dotnet build
或dotnet publish
。看到错误了吗
因此,当您需要.NET Core不可用的包/类时,无法在.NET Core
下创建/构建/运行
可能的解决办法:
- 替换netcore兼容的软件包(如果有,我不知道),或者重新构建现有的兼容(端口)(正如Joel所说)李>
- 完全删除此包(自己实现所需的代码)李>
- 不要以netcoreapp1.1为目标李>
- 在使用此软件包的地方添加条件编译(
#if
),这样您将只在应用程序的net462
版本中使用if。否则(#else
)添加NotImplementedException、null result或其他内容(视情况而定)-编译后您将拥有两个不同的应用程序:net462的全功能应用程序和netcoreapp的受限功能应用程序
您不能手动导入辛迪加订阅源吗?我们所做的是使用dotPeek从非dotnet核心包反编译代码,并使em dotnet complient。大多数情况下,每个包裹只需1/2小时。(如我为cloudinary做的)