关于无法保存Visual Studio自定义布局的问题

Layout信息是对于VS的设置,与solution没有关系,所有的solution使用同一个Layout. CurrentSettings.setting 文件中存储的是layout信息,比如Solution,Property等窗体的位置等,还有就是字体信息,注释颜色,快捷键设置等。每次当用户改变改变这些设置后关闭VS的时候,VS就会自动在CurrentSettings.setting中写入这些信息。所以下次打开VS的时候,就会显示上次设置的layout等。

但是注意,CurrentSettings.setting只是一个文件,保存个某一个位置(可以通关Tool –> Import Export Setting查看该位置),如果同时打开多个VS,那么多个VS是对同一个CurrentSettings.setting进行读写。所以,如果你打开VS1,VS2,并且改变layout布局,先关闭VS1,再关闭VS2,那么当你再次打开VS1的时候,会发现这里的layout是VS2的。所以,不是VS没有保存用户的自定义布局,而是用户的自定义布局被保存了两次,然后最后的布局覆盖了前边的布局。

 

针对于不同的solution,用户每次打开一个solution的时候,会发现上次关闭该solution的时候处于编辑状态打开的那些文档自动被打开。suo文件中包含solution中打开的文件的信息,也就是说,下次打开vs的时候,vs自动给你打开哪个文件。现在有这样一个问题。有的人习惯在打开VS的时候,不打开任何一个文档。因为你上次关闭的时候,可能有多个文档是开着的,这次打开的时候,会自动打开这些文档。因为这些东西是自动保存在.suo文件中了。针对这个问题,我们可以通关给VS写一个Marco来解决。

 

  • Create a new macro . You should see a module called EnvironmentEvents in Macro Explorer.
  • Open the EnvironmentEvents module.
  • Put in this code:
    [csharp][/csharp]

    1. Public Sub CloseDocsOnExit() Handles SolutionEvents.BeforeClosing
    2.     DTE.ExecuteCommand(“Window.CloseAllDocuments”)
    3. End Sub
  • Save and Build the macro.
  • Open a whole bunch of documents in your solution, then close Visual Studio.
  • Open it again. No more open documents!

标签