.net 命令行编译器中的多目标(csc.exe)
我的问题很简单:如何在命令行编译器(csc.exe)中进行多目标定位,特别是对.Net 4客户机配置文件的多目标定位.net 命令行编译器中的多目标(csc.exe),.net,.net,我的问题很简单:如何在命令行编译器(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=
编辑:好吧,我的问题太简单了吗 针对.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
..)targetFramework只能在项目文件中配置,不能作为开关传递到CSC.exe,请参见下面示例中的TargetFrameworkVersion和TargetFrameworkProfile的设置
因此,动态设置的唯一方法是使用以下设置修改项目文件,如果要设置客户端配置文件,请使用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>
调试
任意CPU
{A5F58561-47CA-482A-83E0-1D43C312B0A7}
Exe
性质
控制台应用程序1
控制台应用程序1
v4.0
512
客户
以.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>
调试
任意CPU
{A5F58561-47CA-482A-83E0-1D43C312B0A7}
Exe
性质
控制台应用程序1
控制台应用程序1
v4.0
512
TargetFramework只能在项目文件中配置,不能作为开关传递到CSC.exe,请参见下面示例中的TargetFrameworkVersion和TargetFrameworkProfile的设置
因此,动态设置的唯一方法是使用以下设置修改项目文件,如果要设置客户端配置文件,请使用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>
调试
任意CPU
{A5F58561-47CA-482A-83E0-1D43C312B0A7}
Exe
性质
控制台应用程序1
控制台应用程序1
v4.0
512
客户
以.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>
调试
任意CPU
{A5F58561-47CA-482A-83E0-1D43C312B0A7}
Exe
性质
控制台应用程序1
控制台应用程序1
v4.0
512
< /代码> 如果需要在运行时编译,则应考虑允许编译而不调用单独的进程。
要回答最初的问题,如果将MSBuild详细信息转换为Visual Studio中的详细信息(选项-项目和解决方案-生成和运行),并生成一个针对客户端配置文件的项目,则会在生成输出中看到以下内容:
Csc.exe(stuff…)Program.cs Properties\AssemblyInfo.cs“C:\…\Temp\.NETFramework,版本=v4.0,概要文件=Client.AssemblyAttributes.cs”
引号中的路径实际上是生成的临时文件,包含:
[程序集:TargetFrameworkAttribute(“.NETFramework,版本=v4.0,概要文件=Client”,FrameworkDisplayName=“.NET Framework 4客户端概要文件”)]
这样,如果您直接调用CSC,您应该能够在自己的代码中使用该属性。
如果您需要在运行时编译,那么您应该考虑允许编译而不调用单独的进程。
要回答最初的问题,如果将MSBuild详细信息转换为Visual Studio中的详细信息(选项-项目和解决方案-生成和运行),并生成一个针对客户端配置文件的项目,则会在生成输出中看到以下内容:
Csc.exe(stuff…)Program.cs Properties\AssemblyInfo.cs“C:\…\Temp\.NETFramework,版本=v4.0,概要文件=Client.AssemblyAttributes.cs”
引号中的路径实际上是生成的临时文件,包含:
[程序集:TargetFrameworkAttribute(“.NETFramework,版本=v4.0,概要文件=Client”,FrameworkDisplayName=“.NET Framework 4客户端概要文件”)]
因此,如果您直接调用csc,您应该能够在自己的代码中使用该属性。您能更具体一点吗?@JohnSaunders请参阅editCan您不能正确配置.csproj并使用msbuild吗?@JaimeTorres Humm。。那么你能告诉我如何在“运行时”中制作.csproj吗?我需要在运行时编译,例如Process.Start(“csc source.cs”)
(我不知道如何编写msbuild项目文件(语法等)。如果您能告诉我如何……,我将非常感谢您的帮助。)@ikh“运行时”是什么意思?您是否动态生成整个应用程序,然后编译它们?如果是这样,您只需为.csproj文件使用模板并手动创建即可。这是一个简单的XML文件,所以应该不难。您能更具体一点吗?@JohnSaunders请参阅edit您能不能正确配置您的.csproj并使用msbuild?@jaimetores Humm。。那么你能告诉我如何在“运行时”中制作.csproj吗?我需要在运行时编译,例如Process.Start(“csc source.cs”)
(我不知道如何编写msbuild项目文件(语法等)。如果您能告诉我如何……,我将非常感谢您的帮助。)@ikh“运行时”是什么意思?您是否动态生成整个应用程序,然后编译它们?如果是这样,您只需为.csproj文件使用模板并手动创建即可。这是一个简单的XML文件,所以应该不难。我说的“在运行时编译”,就像Process.Start(“csc”)
。。无论如何,谢谢你!我说的“在运行时编译”,就像是Process.Start(“csc”)
。。无论如何,谢谢你!