当我尝试在 Visual Studio Online 中构建项目时,出现此错误:
…\Frontend\Startup.cs(65,49): Error CS0518: Predefined type 'System.Void' is not defined or imported
…\Frontend\Startup.cs(65,49): DNXCore,Version=v5.0 error CS0518: Predefined type 'System.Void' is not defined or imported [C:\a\1\s\Frontend\src\Frontend\Frontend.xproj]
看来错误发生在我引用另一个库(包类库)的地方。
附注我在这里进行了一些对话:在 Visual Studio Team Services 中构建和部署(到 Azure)ASP.NET 5 的简单方法,但毕竟没有答案,所以我仍然无法构建它......
Web 项目.json:
"dependencies": {
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Web.Common": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
库项目.json
"frameworks": {
"dnx451": { },
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516"
}
}
},
"dependencies": {
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final"
}
问题在于我的库引用不在同一个文件夹中,并且默认情况下脚本不会在那里运行 dnu-restore,因此我必须向上一级并开始在那里递归查找 project.json
$SourceRoot = Split-Path -Path $PSScriptRoot -Parent
# run DNU restore on all project.json files in the src folder including 2>1 to redirect stderr to stdout for badly behaved tools
Get-ChildItem -Path $SourceRoot -Filter project.json -Recurse | ForEach-Object { & dnu restore $_.FullName 2>1 }
感谢埃迪 - MSFT 的帮助!
重新启动 Visual Studio 即可解决问题。 我就是这样。
在我自己的问题中,我重建了整个解决方案,错误就消失了。
编辑:
这很可能是由于 NuGet 包已恢复。
只需在终端中运行
dotnet restore
即可解决问题。
根据我的经验,我删除了 bin 和 obj 文件夹并且它起作用了。尝试关闭 Visual Studio(如果 bin 和 obj 文件夹被锁定)。然而,对于我的同事,他删除了整个解决方案文件夹并从 TFS 获取了最新的解决方案。然后他编译并重建了解决方案并且它起作用了。
我刚刚在具有多个 .NET Core 6 库的 Asp.NET Core 6 解决方案中遇到了这个问题。
重新启动 VS 2022 并没有解决问题。
修复了什么? 删除主项目的Bin和Obj目录的内容。然后重新启动 Visual Studio。
我升级VS2022后遇到了这个问题,我的解决方案是:
然后一切都应该正常工作。
请删除 bin 和 obj 文件夹并重建。
我刚刚在更新“PreBuild.ps1”脚本中的代码以仅恢复 Web 项目的“project.json”文件后重现了此问题。
原始代码(构建成功):
Get-ChildItem -Path $PSScriptRoot\src -Filter project.json -Recurse | ForEach-Object { & dnu restore $_.FullName 2>1 }
更新的代码(构建失败:未定义或导入预定义类型“System.Void”):
Get-ChildItem -Path $PSScriptRoot\src\WebProjectName -Filter project.json -Recurse | ForEach-Object { & dnu restore $_.FullName 2>1 }
因此,您需要检查 PreBuild.ps1 脚本和 PowerShell 步骤的构建日志,以检查 Web 项目和 Library 项目的 project.json 文件是否都已恢复。
更新 NuGet Packges 解决了我的问题。 项目 > 管理 NuGet 包 > 更新 > 全部更新
我正在添加我自己对该错误/问题的经验。
就我而言,我必须从project.json 中删除 "System.Xml.XDocument": "4.0.10" 才能解决问题
我的问题是对 resharper 导入建议过于满意,这导致在项目中手动引用 mscorlib.dll。删除它就清除了一切。
我在 GIT-Extensions Pull 命令后遇到了这个错误。
解决方案中删除所有写保护属性后,问题解决。
就我而言,问题似乎是未找到 dotnet sdk。在我的 Mac 上,sdks 位于
/usr/local/share/dotnet/sdk
我那里有版本7.0.102。
我调整了 OmniSharp 设置:
如果您在设置搜索栏中指定“现代”,则更容易找到这两个选项。
当我进行这些更改时,系统提示我重新启动 OmniSharp,所有红色警告立即消失。
我还没有尝试过这些设置的变化,显然指定特定的 dotnet 版本并不理想。
卸载并重新加载有问题的项目
重新启动 Visual Studio 对我有用,从那以后我就再也没有遇到过这个问题。
就我而言,我指向了错误的 SDK 版本