溶液(.sln
)是一個純文本文件,沒有XML,JSON,等等。所以你可以分析你想要的東西。
如果添加通過Visual Studio中的一個版本的Mac/MonoDevelop的/ Xamarin Studio中,最終在.sln
的一個GlobalSection
:
GlobalSection(MonoDevelopProperties) = preSolution
description = Sushi's Most Amazing App
version = 3.14
EndGlobalSection
EndGlobal
注:該解決方案通過MSBuildEmitSolution=1
生產metaproj
不包含此信息,所以你不能使用內置的MSBuild功能來解析它。
解析版本了(這裏使用bash,但使用自己選擇的工具(一個或多個):
export slnVersion=`grep "version =" SomeSolutionFile.sln | cut -f 2 -d "=" | sed -e 's/^[ \t]*//' | tr -cd "[:print:]"`
現在,你擁有的版本(在ENV在這個例子中變量)
如果你有一個.cs
文件(Global.Template
),看起來像這樣:
namespace MovieMadness
{
public static class Globals
{
public const string SolutionVersion = "SushiHangover";
}
}
您可以替換SushiHangover
與解決方案基於版本:
個
export slnVersion=`grep "version =" SomeSolutionFile.sln | cut -f 2 -d "=" | sed -e 's/^[ \t]*//' | tr -cd "[:print:]"`
sed -e 's/SushiHangover/'"$slnVersion"'/g' Global.template > Global.cs
cat Global.cs
結果:
namespace MovieMadness
{
public static class Globals
{
public const string SolutionVersion = "3.14";
}
}
你說的是在MSBuild的過程中得到它? – SushiHangover
我不知道這樣的函數是編譯時間還是運行時間。這對我來說並不重要,但我相信從解決方案中獲得該價值將在編譯時。 –