Установка свойства VCProject по умолчанию - PullRequest
1 голос
/ 01 марта 2010

Я пытаюсь использовать некоторые макросы VS2005 IDE для изменения большого количества проектов (~ 80) внутри решения. Некоторые свойства, которые я хочу установить, предоставляют программному интерфейсу значение по умолчанию, но многие другие этого не делают. Есть ли общий способ установить такие свойства по умолчанию? (в конечном итоге означает стирание их из файла .vcproj)

Упрощенный пример, установка некоторых случайных свойств:

   Sub SetSomeProps()
    Dim prj As VCProject
    Dim cfg As VCConfiguration
    Dim toolCompiler As VCCLCompilerTool
    Dim toolLinker As VCLinkerTool
    Dim EnvPrj As EnvDTE.Project

    For Each EnvPrj In DTE.Solution.Projects
        prj = EnvPrj.Object
        cfg = prj.Configurations.Item(1)


        toolLinker = cfg.Tools("VCLinkerTool")

        If toolLinker IsNot Nothing Then
            ' Some tool props that expose a *default* interface'
            toolLinker.EnableCOMDATFolding = optFoldingType.optFoldingDefault
            toolLinker.OptimizeReferences = optRefType.optReferencesDefault
            toolLinker.OptimizeForWindows98 = optWin98Type.optWin98Default
        End If

        toolCompiler = cfg.Tools("VCCLCompilerTool")

        If toolCompiler IsNot Nothing Then
            ' How to set it to default?  (*erase* the property from the .vcproj)'
            toolCompiler.CallingConvention = callingConventionOption.callConventionCDecl
            toolCompiler.WholeProgramOptimization = False
            toolCompiler.Detect64BitPortabilityProblems = False
        End If

    Next

End Sub

Любой совет будет оценен.

1 Ответ

2 голосов
/ 01 мая 2010

Для VS 2005, я полагаю, вы можете использовать метод ClearToolProperty в VCConfiguration. Следующий код должен выполнить это для CallingConvention (это C #, но я уверен, что нечто подобное работает для VB):

cfg.ClearToolProperty( toolCompiler, "CallingConvention" );

Это будет иметь тот же эффект, что и вход в GUI и выбор "<inherit from parent or project defaults>" для этой опции.

К сожалению, это кажется устаревшим в VS 2010, и я не уверен, каков новый поддерживаемый метод.

...