Компилировать только текущий проект без проверки ссылочных проектов - PullRequest
2 голосов
/ 26 ноября 2009

Когда я нажимаю «Компилировать проект» (SHIFT + F6) в Visual Studio 2008, Visual Studio всегда сначала проверяет указанные проекты / библиотеки. Это понятно, потому что их нужно сначала скомпилировать, но в настоящее время я провожу большую часть своего времени, работая активно только с проектом верхнего уровня (это приложение ASP.NET, ссылающееся на несколько библиотек), а указанные библиотеки сидят там и не нужно проверять каждый раз.

Когда я делаю полную перестройку, это занимает около 15 секунд (на прогретой машине). Когда я вносил изменения в проект ASP.NET, Visual Studio тратит около 10 секунд, просто проверяя указанные библиотеки.

Есть ли способ «сказать» Visual Studio: «Пожалуйста, поверьте мне, я знаю, что есть ссылки на библиотеки, не проверяйте их»? в этом случае я буду в порядке с ошибками компиляции, если мое предположение было неверным.

Примечание: я подозреваю, что разработчики на C / C ++ могут быть удивлены этим, потому что они обычно измеряют время компиляции в минутах и ​​часто в часах. С другой стороны, в C / C ++ можно скомпилировать только один файл.

Ответы [ 2 ]

7 голосов
/ 26 ноября 2009

Щелкните правой кнопкой мыши решение, выберите свойства.

В Configuration Properties-> Configuration вы можете выбрать, какие проекты должны быть построены.

Вы можете отключить предметы, которые вы не хотите строить. Это более долговременное решение, которое может привести к некоторым проблемам позже, когда вы внесете изменения в другие проекты и забудете перекомпилировать / включить сборку обратно.

Извините, я забыл, что они есть в моей макросе 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

Вы можете использовать их в Macro IDE, добавлять их на пользовательскую панель инструментов и использовать с обозревателем решений.

2 голосов
/ 26 ноября 2009

Вы можете скомпилировать все решение, а затем выгрузить проекты библиотек (щелкните правой кнопкой мыши меню проекта в обозревателе решений).

...