Что такое Microsoft.csharp.dll в .NET 4.0


164

Эта DLL добавлена ​​по умолчанию в проектах Visual Studio 2010. Для чего используется эта новая сборка? Похоже, что после просмотра с помощью Reflector он не содержит много, и Google, похоже, тоже мало о чем говорит.


Ответы:


193

Он используется, когда / если вы используете dynamicключевое слово в вашем проекте. Сборка содержит компоновщик времени выполнения C #.

Компилятор C # по сути был извлечен в библиотеку, чтобы он мог генерировать, компилировать и запускать код, необходимый для поддержки dynamicключевого слова. При первом использовании dynamicв вашем коде эта сборка (а также System.dll, System.Core.dll и System.Dynamic.dll) будет загружена в ваш домен приложений.


3
Не могли бы вы поразмышлять о том, почему они решили ссылаться на него по умолчанию? Должны ли мы все использовать dynamicнамного больше, чем сейчас (то есть никогда)?
мес.

4
@mo это похоже на то, как они автоматически добавляются using System.Linq;ко всем файлам. Это делает новые языковые функции немного более плавными. Если вы хотите использовать dynamic, это просто работает без усилий с вашей стороны.
Мэтт Грир

16

Всегда удалял это до сих пор. Проблем пока нет.


13
Если ваш проект не использует динамическое ключевое слово, я думаю, это нормально, чтобы удалить строку, которая говорит <Reference Include="Microsoft.CSharp" /> в файле .csproj.
Cheeso

Спасибо TomTom и @Cheeso. Я пытался собрать .dll (Framework установлен на 3.5) для использования с Unity, и удаление его из файла .csproj добилось цели.
Вольфрам

4
Этот «ответ» более уместен в качестве комментария под вопросом. Хотя он предлагает обходной путь, он на самом деле не отвечает на вопрос о том, для чего предназначена новая сборка.
toonice
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.