无法在.NET Core中编译Environment.Exit
相关: .NET Core中的System.Environment
我正在尝试编译一个在.NET Core中使用Environment.Exit
的程序。 我已经使用yo aspnet
创建了默认的控制台应用程序,安装了System.Runtime.Extensions
,然后添加了对Environment.Exit(1)
的调用Environment.Exit(1)
github上的完整示例)。 运行dnu build
此错误:
C:\git\environmentexit\ConsoleApplication\Program.cs(13,25): DNXCore,Version=v5.0 error CS0117: 'Environment' does not contain a definition for 'Exit'
据我所知, 这个corefx pull请求应该意味着Environment.Exit
暴露,所以我无法弄清楚我还缺少什么。
有任何想法吗?
首先,我想确认当前稳定版本的DNX中存在问题: 1.0.0-rc1-update1
与Visual Studio 2015 Update 1一起安装。问题已在当前不稳定版本1.0.0-rc2-16343
修复 1.0.0-rc2-16343
我试着在下面详细描述每个人如何逐步重现问题。 在下一步中,我将展示如何安装DNX的最新不稳定版本(今天是1.0.0-rc2-16343
)并成功编译您的演示。 最后,我展示了如何卸载DNX的不稳定版本,回到1.0.0-rc1-update1
。
首先,了解可以安装多个版本的DNX非常重要。 另一方面,通过项目上下文菜单中的“Restore Packages”使用或通过使用“dnu restore”命令解析的所有包将被保存(缓存)在公共文件夹 %USERPROFILE%\.dnx\packages
。 依赖关系将从NuGet解决。 确切地说,文件%APPDAT%\NuGet\NuGet.Config
包含NuGet的配置,其中包含用于解析依赖关系的URL。 因此,在使用不同的NuGet配置和不同版本的DNX“播放”之后,可能会出现错误的结果。 我发现这种行为是今天DNX的大型设计问题。 我希望它很快就能解决。
无论如何,我严格建议删除 %USERPROFILE%\.dnx\packages
所有文件以获得确定性结果。 此外,应该validationNuGet配置仅从星标NuGet源https://api.nuget.org/v3/index.json
(或https://www.myget.org/F/aspnetvnext/api/v2/
加载文件https://www.myget.org/F/aspnetvnext/api/v2/
)并且可选地来自https://www.myget.org/F/aspnetvnext/api/v3/index.json
(或https://www.myget.org/F/aspnetmaster/api/v2
),其中包含其他ASP.NET稳定包。 可以手动编辑文件%APPDAT%\NuGet\NuGet.Config
,也可以在菜单中检查Visual Studio中的上述源:“工具”/“NuGet包管理器”/“包管理器设置”并选择“包源”最后。
1)我删除了%USERPROFILE%\.dnx\packages
下的所有文件.2)使用“dnvm list”validation我只有1.0.0-rc1-final
和1.0.0-rc1-update1
版本的DNX。 我使用诸如“dnvm uninstall 1.0.0-rc2-16343 -r coreclr -arch x86”之类的东西卸载了一些不需要的版本,并通过使用“dnvm upgrade”validation了1.0.0-rc1-update1
是默认的。 之后显示“dnvm list”:
3)在我的初始配置中仅设置https://api.nuget.org/v3/index.json
:
用Program.cs
构建演示之后
using System; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { Console.WriteLine("Goodbye, cruel world"); Environment.Exit(1); } } }
和project.json
{ "version": "1.0.0-*", "description": "ConsoleApplication Console Application", "authors": [ "" ], "tags": [ "" ], "projectUrl": "", "licenseUrl": "", "tooling": { "defaultNamespace": "ConsoleApplication" }, "commands": { "ConsoleApplication": "ConsoleApplication" }, "dependencies": { }, "frameworks": { "dnx451": { }, "dnxcore50": { "dependencies": { "System.Console": "4.0.0-*", "System.Runtime": "4.0.21-*", "System.Runtime.Extensions": "4.0.11-*" } } } }
我解决了以下依赖项
和错误消息
现在我使用安装了最新的不稳定 DNX
dnvm upgrade -u -r coreclr -arch x64 dnvm upgrade -u -r clr -arch x64 dnvm upgrade -u -r coreclr dnvm upgrade -u -r clr
显示命令“dnvm list”
之后我修改了NuGet配置以使用https://www.myget.org/F/aspnetvnext/api/v3/index.json
:
然后我在Visual Studio的GUI sdk.verison
的global.json
从"1.0.0-rc1-update1"
为"1.0.0-rc2-16343"
:
并保存了更改。 之后我制作了“Restore Packages”并再次构建项目。 我得到以下版本的依赖项:
并且程序可以在没有任何错误的情况下执行。
值得一提的是,即使我们将sdk.verison
更改回"1.0.0-rc1-update1"
我们仍然会从rc2-16343
获得相同的依赖性分辨率,因为它将用于在%USERPROFILE%\.dnx\packages
兑换的包%USERPROFILE%\.dnx\packages
。 将NuGet配置更改为原始状态(取消选中URL https://www.myget.org/F/aspnetvnext/api/v3/index.json
)并删除所有%USERPROFILE%\.dnx\packages
。 我建议你通过使用来卸载DNX的不需要的夜间版本
dnvm upgrade dnvm uninstall 1.0.0-rc2-16343 -r coreclr -arch x64 dnvm uninstall 1.0.0-rc2-16343 -r clr -arch x64 dnvm uninstall 1.0.0-rc2-16343 -r coreclr dnvm uninstall 1.0.0-rc2-16343 -r clr
在所有步骤之后,在最初的“dnvm list”中应该具有相同的状态。 可以validation%USERPROFILE%\.dnx\runtimes
不包含1.0.0-rc2-16343
任何目录,文件%USERPROFILE%\.dnx\alias\default.txt
包含dnx-clr-win-x86.1.0.0-rc1-update1
和PATH仅包含%USERPROFILE%\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin
,而不包含对1.0.0-rc2-16343
引用。 换句话说,我们完成了测试并返回到稳定的rc1-update1。
- 使用特定的HttpMessageHandler注入单实例HttpClient
- 在.NetCore项目中引用.Net 4.6.2项目(VS2017 15.4.4)
- 如何通过nuget包共享源代码,以便在.NET Core项目中使用
- ASP核心通过外部(自定义)服务登录
- 如何解决.net核心构建错误NETDSDK1061和警告MSB3277
- Swashbuckle.AspNetCore v1.0.0 with OAuth2,flow:application – > IdentityServer4
- CS0433:两者中都存在“List ”类型
- 如何将自定义角色添加到ASP.NET Core
- 从.NET Core 1.0类库引用mscorlib 4.0.0.0