我有一个引用netstandard2.0项目的.net 4.6.1项目(使用新的csproj格式)。 构建此项目时,我会在输出中出现错误,但不会出现在Visual Studio 2017的UI或错误列表中(版本15.4.3)。
输出中列出的错误是
The type or namespace name 'Services' does not exist in the namespace
我使用msbuild /bl
构建了项目并使用了structured log viewer
查看用于编译项目的实际命令。
命令很长(25000+个字符)
我将此命令放在bat文件中并运行它返回:
error CS0006: Metadata file 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\SystemDiagnostics.StackTrace.dll' could not be found
error CS0006: Metadata file 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Runime.dll' could not be found
error CS0006: Metadata file 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v46.1\Facades\System.ServiceModel.Primitives.dll' could not be found
这些库是通过/reference
csc参数引用的,但输出中的错误名称略有错误:
SystemDiagnostics.StackTrace.dll 而不是 System.Diagnostics.StackTrace.dll
System.Runime.dll 而不是System.Runtime.dll
.NETFramework \ v46.1 \ Facades \ System.ServiceModel.Primitives.dll .NETFramework \ v4.6.1 \ Facades \ System.ServiceModel.Primitives.dll
为什么csc会尝试找到那些错误的错位名称而不是实际引用的dll?
PS :long csc命令的Services
中缺少包含/refferences
命名空间的netstandard2.0 dll。