2014-02-19 3 views
1

Мой вопрос прост: как я могу сделать многотаргетинг в компиляторе командной строки (csc.exe), особенно для .Net 4 Профиль клиента?множественный таргетинг в компиляторе командной строки (csc.exe)


Редактировать: Хорошо, мой вопрос слишком прост?

Компилятор, предназначенный для .net 4.5, является %windir%\Microsoft.NET\Framework\v4.0.30319\csc.exe. Когда я запускаю csc source.cs, выход ориентирован на .net 4.5.

Я хочу настроить таргетинг на профиль .net 4 клиента в компиляторе командной строки (csc.exe), например csc /targetFramework="v4.0;Profile=Client" source.cs. (Конечно, нет никакой возможности /targetFramework ...)

+1

Можете ли вы уточнить? –

+0

@JohnSaunders см. В редакторе – ikh

+0

Можете ли вы правильно настроить свой .csproj и использовать msbuild? –

ответ

4

Если вам нужно собрать во время выполнения, то вам следует рассмотреть вопрос о providers in System.CodeDOM, которые позволяют компиляцию без вызова отдельного процесса.

Чтобы ответить на ваш первоначальный вопрос, если вы включите многословие MSBuild в «Подробно» в Visual Studio («Опции - Проекты и решения - Создайте и запустите») и создайте проект, ориентированный на профиль клиента, вы увидите это в выводе сборки:

Csc.exe (stuff...) Program.cs Properties\AssemblyInfo.cs "C:\...\Temp\.NETFramework,Version=v4.0,Profile=Client.AssemblyAttributes.cs"

путь в кавычках, на самом деле генерируется временный файл, содержащий:

[assembly: TargetFrameworkAttribute(".NETFramework,Version=v4.0,Profile=Client", FrameworkDisplayName = ".NET Framework 4 Client Profile")]

Таким образом, вы должны быть в состоянии использовать тыс при атрибуте в вашем собственном коде, если вы вызываете csc напрямую.

+0

То, что я сказал, «компилировать во время выполнения», это просто «Process.Start (« csc »)' .. в любом случае, спасибо! – ikh

2

TargetFramework можно настроить только файл проекта и не может быть принят в качестве переключателя в Csc.exe см параметры TargetFrameworkVersion и TargetFrameworkProfile в ниже пример

Таким образом, единственный способ динамически устанавливать это изменить файл проекта с ниже настройки и компиляции с csc.exe, если вы хотите установить Client Profile

ориентируетесь .NET Framework 4.0 Client Profile

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 
    <ProjectGuid>{A5F58561-47CA-482A-83E0-1D43C312B0A7}</ProjectGuid> 
    <OutputType>Exe</OutputType> 
    <AppDesignerFolder>Properties</AppDesignerFolder> 
    <RootNamespace>ConsoleApplication1</RootNamespace> 
    <AssemblyName>ConsoleApplication1</AssemblyName> 
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
    <FileAlignment>512</FileAlignment> 
    <TargetFrameworkProfile>Client</TargetFrameworkProfile> 
    </PropertyGroup> 

ориентируется .NET Framework 4,0

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 
    <ProjectGuid>{A5F58561-47CA-482A-83E0-1D43C312B0A7}</ProjectGuid> 
    <OutputType>Exe</OutputType> 
    <AppDesignerFolder>Properties</AppDesignerFolder> 
    <RootNamespace>ConsoleApplication1</RootNamespace> 
    <AssemblyName>ConsoleApplication1</AssemblyName> 
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
    <FileAlignment>512</FileAlignment> 
    <TargetFrameworkProfile></TargetFrameworkProfile> 
    </PropertyGroup> 
Смежные вопросы