仅编译当前项目,而不检查引用的项目

问题描述 投票:0回答:2

当我在 Visual Studio 2008 中点击“编译项目”(SHIFT+F6) 时,Visual Studio 似乎总是首先检查引用的项目/库。这是可以理解的,因为它们必须首先编译,但目前我的大部分时间都花在了顶级项目上(它是一个引用许多库的 ASP.NET 应用程序),并且引用的库都在在那里,不需要每次都检查。

当我进行完全重建时,大约需要 15 秒(在预热的机器上)。当我在 ASP.NET 项目中进行更改时,Visual Studio 会花费大约 10 秒的时间来检查引用的库。

有没有办法“告诉”Visual Studio:“请相信我,我知道引用的库在那里,不要检查它们”?在这种情况下,如果我的假设是错误的,我可以接受编译错误。

注意:我怀疑 C/C++ 开发人员可能会对此感到好笑,因为他们通常以分钟甚至小时为单位来衡量编译时间。另一方面,在 C/C++ 中只能编译单个文件。

c# visual-studio visual-studio-2008
2个回答
7
投票

右键单击解决方案,选择属性。

在“配置属性”->“配置”下,您可以选择应构建哪些项目。

您可以关闭不想构建的项目。这是一个更永久的解决方案,当您对其他项目进行更改并忘记重新编译/切换回构建时,可能会在以后引起一些麻烦。

抱歉,我忘了我的宏 IDE 中有这些

Sub SetAllCompile()
        Dim scs As EnvDTE.SolutionContexts = DTE.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts
        Dim sc As EnvDTE.SolutionContext
        For Each sc In scs
            sc.ShouldBuild = True
        Next
    End Sub

Sub SetNoneCompile()
    Dim scs As EnvDTE.SolutionContexts = DTE.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts
    Dim sc As EnvDTE.SolutionContext
    For Each sc In scs
        sc.ShouldBuild = False
    Next
End Sub

Sub SetInvertCompile()
    Dim scs As EnvDTE.SolutionContexts = DTE.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts
    Dim sc As EnvDTE.SolutionContext
    For Each sc In scs
        sc.ShouldBuild = Not sc.ShouldBuild
    Next
End Sub

Sub SetSelectedCompile()
    Dim scs As EnvDTE.SolutionContexts = DTE.Solution.SolutionBuild.ActiveConfiguration.SolutionContexts
    Dim sc As EnvDTE.SolutionContext
    For Each sc In scs
        sc.ShouldBuild = False
    Next
    Dim selItem As SelectedItem
    For Each selItem In DTE.SelectedItems
        For Each sc In scs
            Try
                If (sc.ProjectName = selItem.Project.UniqueName) Then
                    sc.ShouldBuild = True
                End If
            Catch
            End Try
        Next
    Next
End Sub

您可以在宏 IDE 中使用它们,将它们添加到自定义工具栏并与解决方案资源管理器一起使用。


2
投票

您可以编译整个解决方案,然后卸载库项目(在解决方案资源管理器中右键单击项目菜单)。

© www.soinside.com 2019 - 2024. All rights reserved.