Я хочу создать проект с моно, который использует имена Microsoft.Build.

using System;
using System.Diagnostics;
using System.IO;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;

Весь файл доступен здесь.

Однако я получаю эти ошибки:

$ mcs LoggerImpl.cs
LoggerImpl.cs(4,17): error CS0234: The type or namespace name `Build' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
LoggerImpl.cs(5,17): error CS0234: The type or namespace name `Build' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
LoggerImpl.cs(15,41): error CS0246: The type or namespace name `IEventSource' could not be found. Are you missing a using directive or an assembly reference?
LoggerImpl.cs(28,44): error CS0246: The type or namespace name `ProjectStartedEventArgs' could not be found. Are you missing a using directive or an assembly reference?
LoggerImpl.cs(36,43): error CS0246: The type or namespace name `BuildFinishedEventArgs' could not be found. Are you missing a using directive or an assembly reference?
LoggerImpl.cs(52,41): error CS0246: The type or namespace name `BuildErrorEventArgs' could not be found. Are you missing a using directive or an assembly reference?
LoggerImpl.cs(62,43): error CS0246: The type or namespace name `BuildWarningEventArgs' could not be found. Are you missing a using directive or an assembly reference?
Compilation failed: 7 error(s), 0 warnings

То же самое с smcs. Это странно, потому что gacutil перечисляет Microsoft.Build как установленную сборку:

$gacutil -l Microsoft.Build
The following assemblies are installed into the GAC:
Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Number of items = 1

И даже установлен Microsoft.Build.Framework (который тоже используется):

$ gacutil -l Microsoft.Build.Framework
The following assemblies are installed into the GAC:
Microsoft.Build.Framework, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Microsoft.Build.Framework, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Number of items = 3

Что я делаю не так?

1
Max Yankov 10 Дек 2012 в 19:53
3
Цитата: Вам не хватает ссылки на сборку?
 – 
Hans Passant
10 Дек 2012 в 19:58
Я думаю, что например Microsoft.Build.Framework не работает под Mono. Пожалуйста, проверьте все свои сборки с помощью MoMA: mono-project.com/MoMA
 – 
CodeTherapist
10 Дек 2012 в 20:41

1 ответ

Лучший ответ

Microsoft.Build.dll есть, но вам нужно сослаться на него:

mcs LoggerImpl.cs -r:Microsoft.Build.dll
2
Rolf Bjarne Kvinge 11 Дек 2012 в 01:59