cop*_*pro 5 c# build visual-studio
使用Visual Stdio 2008时,可以使用内部工具构建C++项目,而不是让IDE直接调用MSVC.如果使用跨平台构建系统,这可以提高跨平台构建的一致性.
但是,我无法弄清楚如何像C#项目那样做.可以简单地将其注册为具有C#源的本机项目,但是,您将失去通过C#项目获得的一些优势.更重要的是,这将意味着允许项目直接构建和使用外部工具(这是可悲的必要)将需要两个单独的项目,而不是仅仅创建一个备用构建配置来调用外部工具.
有谁知道是否可以阻止Visual Studio csc
自行调用而是调用外部工具?
编辑:显然有一些误解.这里的目标不是编译Visual Studio之外的任何东西.相反,它允许Visual Studio作为IDE而不是构建系统.已经有一个(基于Scons的)构建系统能够编译C#和C++源代码,并且Visual Studio已经配置为调用Scons来编译C++项目.我正在尝试对其进行配置,以便当您点击"构建"按钮时,它将为C#项目以及C++项目调用Scons.
编辑:您仍然可以使用MSBuild回答您的问题(如果您只是想在IDE外部编译).IDE(Visual Studios)只是构建由MSBuild构建的构建文件的"奇特"方式.Visual Studios不构建文件,它只是调用随.NET Framework 2.0一起提供的MSBuild,它根据您创建的项目文件编译代码.如果Scons可以读取并处理MSBuild文件,那么我相信你可以调用它来构建你的项目.但考虑到C#是Microsoft语言这一事实,我认为你很难找到不使用MSBuild的增值,因为我认为语言和构建工具都非常适合一起工作. - 结束编辑
您可以使用MSBuild编译C#项目.如果在文本编辑器中打开.csproj文件,您将看到它是MSBuild文件.如果您想在IDE之外编写一些C#,您可以使用.csproj文件作为起点构建构建文件,并调用MSBuild来编译您的应用程序.IDE只是一种抽象编辑MSBuild文件的方法.
如果您真的很勤奋,您可以创建一组自定义任务,以便在自定义构建过程中执行操作,例如移动文件和版本控制. MSBuild社区任务是在MSBuild期间使用自定义代码为您执行任务的一个很好的示例.
鉴于所有其他答案,当 VS 或 MSBuild 执行构建时 MSBuild 执行的操作可以在 .Net 附带的 Targets 文件中找到。这些可以在系统上的 FrameWork 目录中找到。就我而言:
C:\Windows\Microsoft.NET\Framework64\v3.5
Run Code Online (Sandbox Code Playgroud)
包含Microsoft.Common.targets
其他内容。该文件包含以下片段:
<!--
============================================================
Build
The main build entry point.
============================================================
-->
<PropertyGroup>
<BuildDependsOn>
BeforeBuild;
CoreBuild;
AfterBuild
</BuildDependsOn>
</PropertyGroup>
<Target
Name="Build"
Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
DependsOnTargets="$(BuildDependsOn)"
Outputs="$(TargetPath)"/>
Run Code Online (Sandbox Code Playgroud)
这意味着重新定义这个 Target 你可以让 MSBuild 成为 VS 做你想做的任何事情。上述文件的顶部包含一条重要消息:
Microsoft.Common.targets
WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
created a backup copy. Incorrect changes to this file will make it
impossible to load or build your projects from the command-line or the IDE.
This file defines the steps in the standard build process for .NET projects. It
contains all the steps that are common among the different .NET languages, such as
Visual Basic, C#, and Visual J#.
Run Code Online (Sandbox Code Playgroud)
我的建议是阅读有关 MSBuild 及其构建文件语法的所有内容,并尝试重新定义项目中的构建目标。我的印象是,在阅读了 MSBuild 之后,您可能会找到一种更简单的方法来满足您的要求。您可以在这个问题的答案之一中找到像这样重新定义目标的示例。
如何重新定义目标?重新定义本质上是在定义相同的目标“之后”对其进行定义。因此,例如在您的 .*proj 文件中,在导入本例中构建项目所需的所有目标的行Build
Task
后定义一个。一个例子可以是<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
C#
<Target
Name="Build"
Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
DependsOnTargets="BeforeBuild"
Outputs="$(TargetPath)">
<Exec Command="nmake" />
</Target>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5112 次 |
最近记录: |