Roslyn бросает язык "C#" не поддерживается
Я создал проект библиотеки классов и сделал некоторую обработку, а также использовал Roslyn для генерации кода.
Я использую библиотеку в приложении WPF GUI в качестве ссылки.
это пакеты NuGet:
Build не показывает ошибки, однако, когда я использую следующий код:
private static void GetGenerator()
{
workspace = new AdhocWorkspace();
generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp);
}
Я получаю исключение:
"язык' C# ' не является поддерживаемый."
at: Microsoft.CodeAnalysis.Host.HostWorkspaceServices.GetLanguageServices(String languageName)
at: Microsoft.CodeAnalysis.Host.Mef.MefWorkspaceServices.GetLanguageServices(String languageName)
at: Microsoft.CodeAnalysis.Editing.SyntaxGenerator.GetGenerator(Workspace workspace, String language)
по данным этой и этой, Я должен скопировать файлы CodeAnalysis локально и добавить необходимые ссылки. Они есть, но происходит ошибка.
это все еще ошибка, которая не была исправлена в прошлом году?
что еще я должен делать?
2 ответов
скорее всего это потому, что вы не ссылки Microsoft.CodeAnalysis.CSharp.Workspaces
в вашем коде, т. е. вы никогда не используете тип или метод в этой dll, поэтому MSBuild считает, что это не нужно (см., например,этой вопрос).
Так что вы могли бы сделать, например, добавьте следующую строку где-то в проект библиотеки классов:
var _ = typeof(Microsoft.CodeAnalysis.CSharp.Formatting.CSharpFormattingOptions);
тогда MSBuild должен скопировать Microsoft.CodeAnalysis.CSharp.Workspaces.dll
и все должно быть нормально. Нет необходимости ссылаться на пакеты NuGet из всех других проекты.
вы должны добавить Microsoft.CodeAnalysis
как проект библиотеки классов и ссылка на проект как хорошо.