Как работать с .sln

Разработка на C# под linux
Как удалить проект из .sln-файла?
http://stackoverflow.com/questions/707107/parsing-visual-studio-solution-files
The .NET 4.0 version of the Microsoft.Build assembly contains a SolutionParser class in the Microsoft.Build.Construction namespace that parses Visual Studio solution files.

Можно определить операционную систему. Идея в том, чтобы в скрипте msbuild определить операционную систему, на которой выполняется сборка и в зависимости от этого определить #define MONO
тогда проектам было бы достаточно только заинклюдить этот скрипт

fact is that the solution file pretty much magically becomes a MSBuild file when MSBuild executes it -- which is what happens when you build the solution in visual studio.

http://stackoverflow.com/questions/28196339/how-can-csproj-know-about-its-solution
Variables $(SolutionDir), $(SolutionPath), $(SolutionExt), etc, only defined when you build your .sln file, they are not defined when you build project directly.

VS 2005 - https://msdn.microsoft.com/en-us/library/bb165951(v=vs.80).aspx
VS 2015 - https://msdn.microsoft.com/en-us/library/bb165951(v=vs.140).aspx
http://stackoverflow.com/questions/2472183/replace-sln-with-msbuild-and-wrap-contained-projects-into-targets
http://www.jayway.com/2015/03/13/visual-studio-how-to-create-a-solution-template-with-multiple-projects/

https://msdn.microsoft.com/en-us/library/bb165922.aspx
A solution is a grouping of one or more projects that work together to create an application.
The project and status information that pertain to the solution are stored in two solution files, a text-based solution (.sln) file and a binary solution user option (.suo) file.

https://msdn.microsoft.com/en-us/library/bb165327.aspx

When a solution is opened, the following process takes place.

  1. The environment reads the solution.

  2. If the environment finds a CLSID, it loads the corresponding VSPackage.

  3. If a VSPackage is loaded, the environment calls QueryInterface for IVsPackage interface, for the interface that the VSPackage requires.

    1. When reading from an .sln file, the environment calls QueryInterface for IVsPersistSolutionProps.

    2. When reading from an .suo file, the environment calls QueryInterface for IVsPersistSolutionOpts.



https://msdn.microsoft.com/ru-ru/library/bb165951(v=vs.80).aspx
Only the .sln file contains entries in the preSolution and postSolution sections. There are no similar sections in the .suo file since the solution needs this information to load properly.

GlobalSection(SolutionConfiguration) = preSolution
	ConfigName.0 = Debug
       ConfigName.1 = Release
EndGlobalSection

https://msdn.microsoft.com/ru-ru/library/bb166499(v=vs.80).aspx

If your VSPackage is loaded as a result of being referenced in the .sln file, the environment calls ReadSolutionProps to read in the .sln file.
When a user opens a solution, the environment cycles through the preSolution, Project, and postSolution information in the .sln file to load the solution, projects within the solution, and any persisted information attached to the solution.

GlobalSection(SolutionProperties) = preSolution

http://www.windowsdevcenter.com/pub/a/dotnet/excerpt/vshacks_chap1/?page=4
Visual Studio 2005 includes an additional section that is not present in any of the older versions of Visual Studio;
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection

If the FALSE is switched to TRUE, then the solution node is hidden in the IDE.

http://goobbe.com/questions/8104536/visual-studios-sln-file-solutionproperties-or-performance
I believe HideSolutionNode is true by default, until you add a second project to the solution (at least with vs2010 and probably 2012.)

http://www.nivisec.com/2008/09/vsts-projects-have-recently-been-added.html
I also managed to fix our "Some of the properties associated with the solution could not be read." error as well by removing a "GlobalSection(SolutionProperties) = preSolution" section that had no projects listed in it.

Как вынести конфигурации в отдельный файл

http://stackoverflow.com/questions/5596329/visual-studio-2010-cannot-load-a-project-where-the-projectconfiguration-elemen

IDE

http://superuser.com/questions/255690/how-do-i-differentiate-between-2-different-solutions-of-the-same-name-in-visual

RDT

When the solution is opened in Visual Studio, an entry is made for the solution file (Solution1.sln) in the running document table (RDT).

If an element of the project is opened for editing, there is an entry for the project file in the RDT.

.suo

The .suo file contains user-specific options, such as private notes, that are not intended to be shared or placed under source code control.