溶液(.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
我不知道这样的函数是编译时间还是运行时间。这对我来说并不重要,但我相信从解决方案中获得该价值将在编译时。 –