Подтвердить что ты не робот

Как я могу скомпилировать .NET 3.5 С# код в системе без Visual Studio?

У меня есть код С#, который использует некоторые конструкции, специфичные для .NET 3.5. Когда вы устанавливаете дистрибутив .NET Framework, вы получаете с ним компилятор С# (csc.exe). Даже если я укажу csc.exe в C:\Windows\Microsoft.NET\Framework\v3.5, я не могу скомпилировать код на компьютере с только установленной платформой .NET Framework, но не Visual Студия. Я могу скомпилировать код, который без проблем использует конструкторы v2.0. Как я могу это сделать?

Вот пример, демонстрирующий мою проблему:

using System;
class Program
{
    public static void Main()
    {
        // The MacOSX value to the PlatformID enum was added after
        // .NET v2.0
        if (Environment.OSVersion.Platform == PlatformID.MacOSX)
        {
            Console.WriteLine("Found mac");
        }
        Console.WriteLine("Simple program");
    }
}

При компиляции этого кода с помощью csc.exe я получаю следующую ошибку:

test.cs(9, 58): ошибка CS0117: "System.PlatformID" не содержит определения для "MacOSX"

При выполнении csc.exe /? я получаю баннер:

Microsoft (R) Visual С# 2008 компилятор версии 3.5.21022.8
для Microsoft (R).NET Framework версии 3.5
Авторское право (C) Корпорация Microsoft. Все права защищены.

4b9b3361

Ответ 1

Microsoft (R) Visual С# 2008 компилятор версии 3.5.21022.8

Эта старая оригинальная версия .NET 3.5. Пакет обновления 1 имеет довольно неудачное имя, произошли большие изменения. У меня нет машины времени, чтобы проверить, добавила ли она член MacOSX. Сроки совпадают с совпадением с Silverlight.

Включите Windows Update или установите SP1 напрямую.

Ответ 2

Относительно вашей ошибки:

PlatformId.Xbox и Значения PlatformId.MaxOSX были представленный в .NET Framework 2.0 SP2, 3.0 SP2 и 3.5 SP1.

Вероятно, поэтому вы не можете скомпилировать свой пример с помощью командной строки. Когда SP1 установлен, ваш номер версии для 3.5 SP 1 должен выглядеть следующим образом:

Microsoft (R) Visual С# 2008 компилятор версии 3.5.30729.4926

В MSDN имеется целый раздел о Создание командной строки.

Если вы работаете на компьютере, который имеет только .NET Framework SDK, вы может использовать компилятор С# по команде если вы используете команду SDK Подсказка, доступная из Меню Microsoft.NET Framework SDK вариант.

В нем также указано, что произойдет, если у вас установлено несколько версий .NET Framework:

Обычно исполняемый файл csc.exe расположенный в Microsoft.NET\Framework \ папку в системном каталоге. это местоположение может отличаться в зависимости от точная конфигурация для любого человека компьютер. Несколько версий этого исполняемый файл будет присутствовать на компьютер, если более одной версии .NET Framework установлена ​​на компьютер. Для получения дополнительной информации о такие установки, см. Определение Какая версия .NET Framework Установлен.

Пример

csc File.cs

В моем случае я могу сделать:

cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319>

csc somefile.cs

Это должно выводить примерно так:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319 > CSC

Microsoft (R) Visual С# 2010 компилятор версии 4.0.30319.1

Авторское право (C) Корпорация Microsoft. Все права защищены.

Ответ 3

Слышали ли вы о MSBuild? =)

Файлы проекта Visual Studio являются (под капотом) файлами MSBuild, а также могут преобразовывать файлы решений в файлы MSBuild, что фактически означает, что вы может использовать MSBuild из командной строки для создания решения Visual Studio.

Например, скажем, у меня есть проект, расположенный в C:\Repositories\Work\MyProject\ с ассоциированным файлом решения MyProject.sln, и я могу сделать следующее в командной строке:

C:\Users\Me \ > CD\
C: \ > CD Windows\Microsoft.NET\Framework\v3.5
C:\Windows\Microsoft.NET\Framework\v3.5 \ > MSBuild/p: Configuration = debug

Затем MSBuild будет создавать любые проекты в этом решении, которые настроены для сборки для конфигурации debug, и вывести что-то похожее на следующее:

Версия движка Microsoft (R) 3.5.30729.4926 [Microsoft.NET Framework, версия 2.0.50727.4952] Авторское право (C) Microsoft Corporation 2007. Все права защищены.

Сборка началась 17/02/2011 14:55:49. проект "C:\репозиториев\работа\MyProject\MyProject.sln" на node 0 (цели по умолчанию).
Конфигурация здания "Debug |.NET". проект "C:\репозиториев\работа\MyProject\MyProject.sln" (1) строит "c:\Репозиториев\работа\MyProject\MyProject\MyProject.csproj" (2) на node 0 (цели по умолчанию).
Обработка 0 файлов EDMX. Законченный обработка 0 файлов EDMX. CoreCompile: Пропуск целевой "CoreCompile", потому что все выходные файлы обновляются с к входным файлам. CopyFilesToOutputDirectory: копирование файла из "obj\Debug\MyProject.dll" в "Бин\MyProject.dll". MyProject → C:\репозиториев\работа\MyProject\MyProject\Bin\Ultra.Clie nt.dll Копирование файла из "obj\Debug\MyProject.pdb" в "Бин\MyProject.pdb". Сделано здание проект "C:\репозиториев\работа\MyProject\MyProject\Ultra.Cli ent.csproj" (цели по умолчанию).

Ultra_Client_Setup: проект "MyProject.Setup" не выбран для построение в конфигурации решения "Debug |.NET". Готовый строительный проект "C:\репозиториев\работа\MyProject\MyProject.sln" (целевые цели).

Сборка выполнена успешно.     0 Предупреждение (и)     0 Ошибка (ы)

Истекшее время 00: 00: 00.92

Предостережение: MSBuild не способен обрабатывать проекты настройки

Ответ 4

Скорее всего, у вас есть переменная среды, указывающая на неправильную версию фреймворка