none
有没有介绍使用脚本设置VS 2005工程选项的文章 RRS feed

  • 问题

  • 现在使用VS C++ 2005开发一个系统,有上百个模块。我对那些工程属性设置不耐烦了,因为多数是一样的,想写一个脚本进行设置。这类设置包括包含文件夹、附加库、导入库等。有没有介绍使用脚本设置VS 2005工程选项的文章。大家推荐一篇过来.

    2008年6月20日 10:42

答案

  • 你可以在MSDN中查找Microsoft::VisualStudio::VCProjectEngine找到相关资料。

     

    建立一个Console工程,在其中以工程文件名作为参数,之后使用批处理进行所有工程配置的修改。

     

    部分代码如下:

     

    using namespace System;

    #using "Microsoft.VisualStudio.VCProjectEngine.dll"

     

    ......

     

     

    VCProjectEngine ^projEng = gcnew Microsoft::VisualStudio::VCProjectEngine::VCProjectEngineObjectClass;

     

    VCProject ^proj = nullptr;
     
     try
     {
      proj = (VCProject^)projEng->LoadProject(args[0]);
     }

    catch (System::Runtime::InteropServices::COMException ^e)
     {
      if (e->ErrorCode != 0x8005050A)
      {   
       throw;
      }

      Console::WriteLine(L"Unable to load vcproj file \"{0}\".", args[0]);

     return;
     }

     

    // 获取工程配置

    IVCCollection ^configs = (IVCCollection ^)proj->Configurations;

     

    VCConfiguration ^cfg = (VCConfiguration ^)configs->Item(n); // N需要指定

      IVCCollection ^tools = (IVCCollection ^)cfg->Tools;

      VCLinkerTool ^linker = (VCLinkerTool ^)tools->Item(gcnew String("Linker"));

      if (linker == nullptr)
      {
       Console::WriteLine(L"Linker option not found in vcproj \"{0}\", library project?", args[0]);
       return;
      }

     

    // 设置linker项的值

      linker->LinkIncremental = linkIncrementalType::linkIncrementalNo;
      linker->Profile = true;
      linker->OptimizeReferences = : : optRefType : : optNoReferences;
      linker->EnableCOMDATFolding= : : optFoldingType : : optNoFolding;

     

    ///....

    2008年8月6日 6:29