Как я могу решить 'Metadata foo.dll не найден!' ошибки при компиляции кода C # в командной строке? - PullRequest
1 голос
/ 21 февраля 2011

На моей рабочей станции Windows 7 у меня установлено множество компиляторов, включая MSVC9 и MSVC10.Недавно я заметил следующую странную проблему, которая возникает только в моей среде MSVC10.

В моей оболочке MSVC9 (я использую одну из меню «Пуск») запуск csc.exe показывает, что он использует компилятор C # 2008 версии 3.5..30729.4926 (.NET 3.5).В оболочке MSVC10 это версия компилятора 4.0.30128.1.Теперь, следующий небольшой пример программы собирается с csc.exe от MSVC9, но он не работает с MSVC10:

using System;
using System.Windows.Automation;

namespace UIAutomationTest
{
    class Program
    {
        static void Main()
        {
        }
    }
}

Я использую следующую командную строку (с MSVC9, а также MSVC10) для сборки программы:

csc Hello.cs /r:UIAutomationClient.dll /nologo

В MSVC9 это успешно (вывод не печатается и Hello.exe создается).С MSVC10 сборка завершается неудачно с этим сообщением об ошибке:

C:\src>csc Hello.cs /r:UIAutomationClient.dll /nologo
error CS0006: Metadata file 'UIAutomationClient.dll' could not be found

Кто-нибудь знает, почему это так?

ОБНОВЛЕНИЕ: Я заметил, что могу заставить сборку работатьс MSVC10, если я изменю командную строку так, чтобы /r:UIAutomationClient.dll стал /r:WPF\UIAutomationClient.dll.

1 Ответ

0 голосов
/ 21 февраля 2011

Где находится этот файл UIAutomationClient.dll относительно ваших файлов cs?

Попробуйте передать полный путь к UIAutomationClient.dll.

...