Итак, я взглянул на исходный код System.Console here.Как скомпилировать System.Console в C#
Я думал, что было бы интересно посмотреть, как оно реализовано и, возможно, внести некоторые изменения.
Итак, я скопировал исходный код непосредственно из примера Microsoft и вставил его в Visual Studio.
Он не компилируется.
Win32Native.Beep(frequency, duration);
Существует несколько строк, подобных этому. Все они с тем же сообщением об ошибке.
Error 32 The type or namespace name 'Win32Native' could not be found (are you missing a using directive or an assembly reference?)
Существует около сотни сообщений об ошибках, но только 4 уникально-ish. Включая главный выше.
Error 85 The name '__Error' does not exist in the current context
Error 89 Cannot take the address of, get the size of, or declare a pointer to a managed type ('Win32Native.CHAR_INFO')
Error 18 The property or indexer 'System.Console.InternalSyncObject' cannot be used in this context because it lacks the get accessor
Я сильно подозреваю, что мне не хватает ссылок на сборку. Если вы знаете, что они мне дали, чтобы я мог скомпилировать это.
Возможно, будет сложно получить этот источник для компиляции, если вы выборочно копируете файлы. Конкретная проблема, которую вы упомянули, связана с отсутствием Win32Native.cs: http://referencesource.microsoft.com/#mscorlib/microsoft/win32/win32native.cs. –
Вы просто забыли скопировать весь куча дополнительного кода. Расположен в другом месте, например, объявления pinvoke в Win32Native. Просто используйте referenceource.microsoft.com и нажмите на идентификатор, чтобы найти код. –