Скомпилируйте проект C# с помощью команды csc
У меня есть проект.net 4.6.1 (с новым форматом csproj), который ссылается на проект netstandard2.0. При создании этого проекта я получаю ошибки в выводе, но не в пользовательском интерфейсе или списке ошибок Visual Studio 2017 (версия 15.4.3).
ошибка, указанная в выводе
The type or namespace name 'Services' does not exist in the namespace
Я построил проект с msbuild /bl
и использовал просмотрщик структурированного журнала, чтобы увидеть фактическую команду, которая использовалась для компиляции проекта. Команда очень длинная (более 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: Netstandard2.0 DLL, которая содержит Services
пространство имен отсутствует в /refferences
длинной команды csc.