我的问题很简单:如何在命令行编译器(csc.exe)中进行多目标定位,尤其是.Net 4 客户端配置文件?
编辑:好的,我的问题太简单了吗?
目标为.net 4.5的编译器为%windir%\Microsoft.NET\Framework\v4.0.30319\csc.exe
。当我运行csc source.cs
时,输出的目标是.net 4.5。
我想在命令行编译器(csc.exe)中定位到.net 4客户端配置文件,例如csc /targetFramework="v4.0;Profile=Client" source.cs
。 (当然,没有选项/targetFramework
...)
答案 0 :(得分:4)
如果需要在运行时编译,那么你应该考虑providers in System.CodeDOM,它允许编译而不需要调用单独的进程。
要回答您的原始问题,如果您在Visual Studio中将MSBuild详细程度转换为详细信息(选项 - 项目和解决方案 - 构建并运行)并构建针对客户端配置文件的项目,您将在构建输出中看到这一点: / p>
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,您应该可以在自己的代码中使用该属性。
答案 1 :(得分:2)
TargetFramework只能在Project文件中配置,不能作为切换器传递给CSC.exe,请参阅下面示例 TargetFrameworkVersion 和 TargetFrameworkProfile 的设置< / p>
因此,动态设置的唯一方法是使用以下设置修改项目文件,如果要设置客户端配置文件,则使用csc.exe进行编译
目标.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>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>