Я скачал копию Roslyn с помощью nuget.exe
в пустой каталог на моем компьютере.Затем я создал несколько небольших тестовых файлов в C # для воспроизведения с компилятором.В моем коде я использую функции .NET Framework, такие как SqlDataReader
.При компиляции с помощью бинарного файла csc.exe
, включенного в Roslyn, я не указываю вручную какие-либо сборки .NET, которые будут включены в параметры командной строки -reference
или -r
, но все по-прежнему работает.
У меня естьобнаружил файл csc.rsp
в том же каталоге, что и csc.exe
, включая некоторые из этих сборок .NET.Параметры командной строки в этом файле добавляются автоматически, если параметр командной строки -noconfig
не указан.Часть файла выглядит следующим образом:
# Reference the common Framework libraries
/r:Accessibility.dll
/r:Microsoft.CSharp.dll
/r:System.Configuration.dll
/r:System.Configuration.Install.dll
/r:System.Core.dll
/r:System.Data.dll
/r:System.Data.DataSetExtensions.dll
/r:System.Data.Linq.dll
/r:System.Data.OracleClient.dll
/r:System.Deployment.dll
Я подозреваю, что этот файл csc.rsp
является причиной, по которой компилятор может успешно скомпилировать мой код, даже если я не включил никакие сборки .NET вручную.Мой вопрос, однако, как csc.exe
даже знает, где искать эти файлы?
Я искал весь каталог Roslyn с VSCode для любой возможной конфигурации, определяющей, какие пути искать сборки, но у меня ничего не выскакивало,Я также проверил переменную системного пути для каталога, из которого он может автоматически получать файлы, но там я тоже ничего не нашел.Как csc.exe
включает эти файлы, хотя я не сказал ему, где их искать на моем компьютере?