Для тестирования 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
Разница только в System.dll и mscorlib.dll (это ожидается), но когда я пытаюсь в командной строке снова скомпилировать программу с помощью 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?
-noconfig
? - person user4003407   schedule 09.03.2019System.Threading.dll
для .NET Core,System.dll
для .NET Framework иnetstandard.dll
для .NET Standard. Вам нужен только один, а не все три. - person user4003407   schedule 09.03.2019