Для тестирования Semaphore Class был создан образец:
using System;
using System.Threading;
class MyThread
{
public Thread Thrd;
static Semaphore sem = new Semaphore(2, 2);
....
Но я не могу скомпилировать. Это дает мне эту ошибку (CS0246)
The type or namespace name 'Semaphore' could not be found
(are you missing a using directive or an assembly reference?)
Я нашел решение ( «добавлена ссылка« Система »снова» ), чтобы решить эту проблему из другой проблемы , но возник вопрос - какие сборки по умолчанию в стандартном проекте C # VS2017 включают без дополнительных ссылок в проекте?
Потому что по документации .Net Класс семафоров
Определение Пространство имен: System.Threading
Сборки: System.Threading.dll, System.dll, netstandard.dll
Но без ( "снова добавленной ссылки" Система "* ) Класс потоков и Класс SemaphoreSlim работалобычно (без ошибки компилятора CS0246), с помощью .Net документации для этих классов:
Сборки: System.Threading.dll, mscorlib.dll, netstandard.dll
Разницаis System.dll против mscorlib.dll oтолько (это ожидается), но когда я пытаюсь, в командной строке снова скомпилируйте программу с помощью csc.exe и msbuild.Msbuild выдал тот же результат, что и VS IDE (как и ожидалось) - ошибка компиляции CS0246, но
csc.exe sem.cs -out:sem.exe
компилируются без ошибок, и после запуска этой программы и ее нормальной работы.
Если яПравильно понимаемый (.Net docs) по умолчанию «csc.exe» должен включать только mscorlib.dll, все остальные сборки должны быть включены явно с помощью параметров «-lib» и / или «-reference»?
Почему программаобычно компилируется без явной ссылки на "System.Threading.dll, System.dll, netstandard.dll" ?