当我尝试在Visual Studio Online中构建项目时出现此错误:
Frontend \ src \ Frontend \ Startup.cs(65,49):错误CS0518:未定义或导入预定义类型'System.Void' C:\ a \ 1 \ s \ Frontend \ src \ Frontend \ Startup.cs(65,49):DNXCore,Version = v5.0错误CS0518:未定义或导入预定义类型'System.Void'[C:\一个\ 1 \ S \前端\ SRC \前端\ Frontend.xproj]
似乎错误发生在我引用另一个库(包类库)的地方。
P.S。我在这里谈到了这个问题:Easy way to build and deploy (to Azure) ASP.NET 5 in Visual Studio Team Services,但毕竟没有答案,所以我仍然无法建立它...
Web project.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": { }
},
Library project.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 }
感谢Eddie - MSFT的帮助!
答案 0 :(得分:1)
我在更新“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项目和库项目的project.json文件。
答案 1 :(得分:1)
在我自己的问题中,我重建了整个解决方案,错误就消失了。
答案 2 :(得分:0)
我正在添加自己的错误/问题经验。
构成我的部分我必须从project.json中删除“System.Xml.XDocument”:“4.0.10”来解决问题
答案 3 :(得分:0)
以我的经验,我删除了bin和obj文件夹,并且它起作用了。但是,对于我的同事,他删除了整个解决方案文件夹,并从TFS获取了最新的文件夹。然后,他编译并重建了该解决方案,它奏效了。
答案 4 :(得分:0)
转到导致此错误的行上方法的定义并更新依赖项为我解决了此问题
答案 5 :(得分:0)
我的问题是对 resharper 导入建议过于满意,这导致项目中手动引用了 mscorlib.dll。删除它清除了一切。