1+ <Project Sdk =" Microsoft.NET.Sdk" >
2+ <Import Project =" $(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
3+
4+ <PropertyGroup >
5+ <ReleaseNumber Condition =" '$(ReleaseNumber)' == ''" >20</ReleaseNumber >
6+ <BuildNumber Condition =" '$(BUILD_NUMBER)' != ''" >$(BUILD_NUMBER)</BuildNumber >
7+ <BuildNumber Condition =" '$(BUILD_NUMBER)' == ''" >0</BuildNumber >
8+
9+ <ArtifactsRoot >$(MSBuildProjectDirectory)/built</ArtifactsRoot >
10+ <Solution >$(MSBuildProjectDirectory)/src/1Script.sln</Solution >
11+ <Configuration >Release</Configuration >
12+ <Platform >x86</Platform >
13+ </PropertyGroup >
14+
15+ <Target Name =" CleanAll" >
16+
17+ <ItemGroup >
18+ <TestsResults Include =" $(MSBuildProjectDirectory)/tests/*.os.xml" />
19+ </ItemGroup >
20+
21+ <Delete Files =" @(TestsResults)" />
22+ <DeleteTree Directories =" $(ArtifactsRoot)" Condition =" Exists($(ArtifactsRoot))" />
23+
24+ <MSBuild Projects =" $(Solution)" Targets =" Clean" Properties =" ReleaseNumber=$(ReleaseNumber);Configuration=$(Configuration);Platform=$(Platform)" />
25+
26+ </Target >
27+
28+ <Target Name =" Make" >
29+ <MSBuild Projects =" $(Solution)" Targets =" restore;Build" Properties =" ReleaseNumber=$(ReleaseNumber);Configuration=$(Configuration);Platform=$(Platform)" />
30+ </Target >
31+
32+ <Target Name =" CreateDistributions" DependsOnTargets =" CreateInstaller;CreateNuget;CreateZip" >
33+ <ItemGroup >
34+ <TempContent Include =" $(ArtifactsRoot)/tmp" />
35+ <TempContent Include =" $(MDDocFolder)" />
36+ </ItemGroup >
37+ <DeleteTree Directories =" @(TempContent)" />
38+ </Target >
39+
40+ <Target Name =" PrepareArtifactsRoot" >
41+ <PropertyGroup >
42+ <TempFolder >$(ArtifactsRoot)/tmp</TempFolder >
43+ <BinFolder >$(TempFolder)/bin</BinFolder >
44+ <LibFolder >$(TempFolder)/lib</LibFolder >
45+ <ExamplesFolder >$(TempFolder)/examples</ExamplesFolder >
46+ <DocFolder >$(TempFolder)/doc</DocFolder >
47+ <DebugDest >$(ArtifactsRoot)\vscode\</DebugDest >
48+ <MDDocFolder >$(ArtifactsRoot)/mddoc</MDDocFolder >
49+ </PropertyGroup >
50+ <MakeDir Directories =" $(ArtifactsRoot)" />
51+ <MakeDir Directories =" $(TempFolder)" />
52+ </Target >
53+
54+ <Target Name =" PrepareDistributionContent" >
55+
56+ <CallTarget Targets =" GatherBinaries" />
57+ <CallTarget Targets =" GatherLibrary" />
58+ <CallTarget Targets =" GatherExamples" />
59+ <CallTarget Targets =" GatherDocuments" Condition =" '$(OneScriptDocumenter)' != '' " />
60+
61+ </Target >
62+
63+ <!-- Собирает отовсюду содержимое папки bin -->
64+ <Target Name =" GatherBinaries" DependsOnTargets =" Make;PrepareArtifactsRoot" >
65+ <MakeDir Directories =" $(BinFolder)" />
66+
67+ <ItemGroup >
68+ <BuiltProjects Include =" oscript" />
69+ <BuiltProjects Include =" TestApp" />
70+ <BinaryFiles Include =" $(MSBuildProjectDirectory)/src/%(BuiltProjects.Identity)/bin/x86/$(Configuration)/net452/**" />
71+ <BinaryFiles Include =" $(MSBuildProjectDirectory)/src/ASPNETHandler/bin/$(Configuration)/net452/ASPNETHandler.dll" />
72+ </ItemGroup >
73+
74+ <Copy SourceFiles =" @(BinaryFiles)" DestinationFolder =" $(BinFolder)" />
75+ <!-- Копирование скрипта запуска для opm -->
76+ <Copy SourceFiles =" $(MSBuildProjectDirectory)\install\opm.bat" DestinationFolder =" $(BinFolder)" />
77+
78+ <PropertyGroup >
79+ <DebugSrc >$(MSBuildProjectDirectory)/src/DebugServer/bin/$(Configuration)/net452</DebugSrc >
80+ </PropertyGroup >
81+ <ItemGroup >
82+ <DbgBinFiles Include =" $(DebugSrc)/*.dll" />
83+ <DbgBinFiles Include =" $(DebugSrc)/*.exe" />
84+ <DbgBinFiles Include =" $(DebugSrc)/*.config" />
85+ <DbgPackageFiles Include =" $(DebugSrc)/README.md" />
86+ <DbgPackageFiles Include =" $(DebugSrc)/package.json" />
87+ <DbgImageFiles Include =" $(DebugSrc)/images/**" />
88+ </ItemGroup >
89+
90+ <Copy SourceFiles =" @(DbgBinFiles)" DestinationFolder =" $(DebugDest)/bin" />
91+ <Copy SourceFiles =" @(DbgPackageFiles)" DestinationFolder =" $(DebugDest)" />
92+ <Copy SourceFiles =" @(DbgImageFiles)" DestinationFolder =" $(DebugDest)/images" />
93+
94+ </Target >
95+
96+ <!-- Собирает в целевой папке содержимое папки lib -->
97+ <Target Name =" GatherLibrary" DependsOnTargets =" Make;PrepareArtifactsRoot" >
98+
99+ <MakeDir Directories =" $(LibFolder)" />
100+ <Exec Command =" " $(BinFolder)/oscript.exe" " $(MSBuildProjectDirectory)\install\unicode-zipper.os" unpack " $(MSBuildProjectDirectory)\install\opm-0.13.0.ospx" " $(LibFolder)\tmp" " />
101+ <Exec Command =" " $(BinFolder)/oscript.exe" " $(MSBuildProjectDirectory)\install\unicode-zipper.os" unpack " $(LibFolder)\tmp\content.zip" " $(LibFolder)/opm" " />
102+ <Copy SourceFiles =" $(MSBuildProjectDirectory)\install\package-loader.os" DestinationFolder =" $(LibFolder)" />
103+ <DeleteTree Directories =" $(LibFolder)\tmp" />
104+
105+ <CallTarget Targets =" InstallStdLib" Condition =" '$(StandardLibraryPacks)' != ''" />
106+
107+ </Target >
108+
109+ <!-- Копирует поставляемые файлы stdlib, если они есть на машине сборки -->
110+ <Target Name =" InstallStdLib" >
111+ <ItemGroup >
112+ <LibraryFiles Include =" $(StandardLibraryPacks)\**\*" />
113+ </ItemGroup >
114+ <Copy SourceFiles =" @(LibraryFiles)" DestinationFolder =" $(LibFolder)\%(RecursiveDir)" />
115+ </Target >
116+
117+ <!-- Собирает в целевой папке содержимое папки examples -->
118+ <Target Name =" GatherExamples" DependsOnTargets =" PrepareArtifactsRoot" >
119+ <ItemGroup >
120+ <ExampleFiles Include =" $(MSBuildProjectDirectory)\install\examples\**\*" />
121+ </ItemGroup >
122+ <MakeDir Directories =" $(ExamplesFolder)" />
123+ <Copy SourceFiles =" @(ExampleFiles)" DestinationFolder =" $(ExamplesFolder)\%(RecursiveDir)" />
124+ </Target >
125+
126+ <!-- Собирает в целевой папке содержимое папки doc -->
127+ <Target Name =" GatherDocuments" DependsOnTargets =" PrepareArtifactsRoot;GenerateDocs" >
128+ <MakeDir Directories =" $(DocFolder)" />
129+ <Exec Command =" $(OneScriptDocumenter) html $(TMP)\tempdoc.xml " $(DocFolder)" " />
130+ </Target >
131+
132+ <!-- Генерирует необходимую документацию -->
133+ <Target Name =" GenerateDocs" >
134+
135+ <Exec Command =" $(OneScriptDocumenter) $(TMP)\tempdoc.xml " $(BinFolder)\ScriptEngine.dll" " $(BinFolder)\ScriptEngine.HostedScript.dll" " $(BinFolder)\oscript.exe" " />
136+ <MakeDir Directories =" $(MDDocFolder)" />
137+ <Exec Command =" $(OneScriptDocumenter) markdown $(TMP)\tempdoc.xml " $(MDDocFolder)" /syntax/page" />
138+
139+ </Target >
140+
141+ <!-- Чистка промежуточных файлов -->
142+ <Target Name =" CleanIntermediates" AfterTargets =" PrepareDistributionContent" >
143+ <ItemGroup >
144+ <ExcludedArtifacts Include =" $(BinFolder)/*.pdb" />
145+ <ExcludedArtifacts Include =" $(BinFolder)/*.xml" />
146+ <!-- остается от документера. Надо починить его чтобы писал куда-то в другое место -->
147+ <ExcludedArtifacts Include =" $(MSBuildProjectDirectory)/map.json" />
148+ </ItemGroup >
149+ <Delete Files =" @(ExcludedArtifacts)" />
150+ </Target >
151+
152+ <!-- Инсталлятор -->
153+ <Target Name =" CreateInstaller" DependsOnTargets =" PrepareArtifactsRoot" >
154+ <Error Text =" No installer path is specified" Condition =" '$(InnoSetupPath)' == ''" />
155+ <PropertyGroup >
156+ <InstallerStandardPath >"$(InnoSetupPath)\iscc.exe"</InstallerStandardPath >
157+ <DistPath >$(ArtifactsRoot)</DistPath >
158+ </PropertyGroup >
159+ <Exec Command =" $(InstallerStandardPath) " $(MSBuildProjectDirectory)\install\install.iss" /o" $(DistPath)" " />
160+ </Target >
161+
162+ <!-- Nuget -->
163+ <Target Name =" CreateNuget" DependsOnTargets =" PrepareArtifactsRoot" >
164+ <ItemGroup >
165+ <NugetAbleProject Include =" ScriptEngine" />
166+ <NugetAbleProject Include =" ScriptEngine.HostedScript" />
167+ </ItemGroup >
168+
169+ <MSBuild Projects =" src/%(NugetAbleProject.Identity)/%(NugetAbleProject.Identity).csproj" Targets =" pack" Properties =" PackageOutputPath=$(ArtifactsRoot);ReleaseNumber=$(ReleaseNumber)" />
170+
171+ </Target >
172+
173+ <!-- ZIP -->
174+ <Target Name =" CreateZip" DependsOnTargets =" PrepareArtifactsRoot" >
175+ <Exec Command =" " $(BinFolder)\oscript.exe" " $(MSBuildProjectDirectory)\install\unicode-zipper.os" pack " $(TempFolder)/*" " $(ArtifactsRoot)/OneScript-1.0.$(ReleaseNumber).zip" " />
176+ <Exec Command =" " $(BinFolder)\oscript.exe" " $(MSBuildProjectDirectory)\install\unicode-zipper.os" pack " $(MDDocFolder)/*" " $(ArtifactsRoot)/mddoc-1.0.$(ReleaseNumber).zip" " />
177+ </Target >
178+
179+ <!-- MSI -->
180+ <Target Name =" CreateMSI" >
181+ <MSBuild Projects =" $(MSBuildProjectDirectory)\src\Installer\Installer.wixproj"
182+ Properties =" Configuration=$(Configuration);OutputPath=$(ArtifactsRoot);OutputPathForBuild=$(ArtifactsRoot);Version=$1.0.$(ReleaseNumber).$(BuildNumber)" />
183+ </Target >
184+
185+
186+ <Target Name =" xUnitTest" DependsOnTargets =" PrepareArtifactsRoot" >
187+
188+ <CreateItem Include =" $(MSBuildProjectDirectory)\tests\*.os.xml" >
189+ <Output TaskParameter =" Include" ItemName =" RemoveXMLTestResult" />
190+ </CreateItem >
191+
192+ <Delete Files =" @(RemoveXMLTestResult)" />
193+
194+ <Exec WorkingDirectory =" $(MSBuildProjectDirectory)\tests" Command =" " $(BinFolder)/oscript.exe" " $(MSBuildProjectDirectory)\tests\testrunner.os" -runall . xddReportPath ." IgnoreExitCode =" true" />
195+
196+ </Target >
197+
198+ </Project >
0 commit comments