/
smwwiki
/
OneScript_fork
Обзор
Документация
Войти
/
smwwiki
/
OneScript_fork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
Build.csproj
375 строк
17 KB
EvilBeaver
Правка сборки
12 ноя 2024, 20:28
12 ноя 2024, 20:28
3e62436
Код
Авторство
О чём код?
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <VersionPrefix Condition="'$(VersionPrefix)' == ''">2.0.0</VersionPrefix> <ReleaseNumber Condition="'$(VersionSuffix)' == ''">$(VersionPrefix)</ReleaseNumber> <ReleaseNumber Condition="'$(VersionSuffix)' != ''">$(VersionPrefix)-$(VersionSuffix)</ReleaseNumber> <BuildNumber Condition="'$(BUILD_NUMBER)' != ''">$(BUILD_NUMBER)</BuildNumber> <BuildNumber Condition="'$(BUILD_NUMBER)' == ''">0</BuildNumber> <ArtifactsRoot>$(MSBuildProjectDirectory)/built</ArtifactsRoot> <LibDir>$(ArtifactsRoot)/lib</LibDir> <DebugAdapterDir>$(ArtifactsRoot)\vscode\</DebugAdapterDir> <Configuration>Release</Configuration> <Solution>$(MSBuildProjectDirectory)/src/1Script.sln</Solution> </PropertyGroup> <ItemGroup> <PlatformItem Include="x86"> <MSBuildName>x86</MSBuildName> <MSBuildNameCpp>Win32</MSBuildNameCpp> </PlatformItem> <PlatformItem Include="x64"> <MSBuildName>"Any CPU"</MSBuildName> <MSBuildNameCpp>x64</MSBuildNameCpp> </PlatformItem> </ItemGroup> <ItemGroup> <PublishProjects Include="oscript"> <ProjectFile>oscript.csproj</ProjectFile> <Framework>net6.0</Framework> </PublishProjects> <PublishProjects Include="TestApp"> <ProjectFile>TestApp.csproj</ProjectFile> <Framework>net6.0-windows</Framework> </PublishProjects> </ItemGroup> <Target Name="CleanAll"> <ItemGroup> <TestsResults Include="$(MSBuildProjectDirectory)/tests/*.os.xml" /> </ItemGroup> <Delete Files="@(TestsResults)" /> <RemoveDir Directories="$(ArtifactsRoot)" Condition="Exists($(ArtifactsRoot))" /> <MSBuild Projects="$(Solution)" Targets="Clean"/> </Target> <Target Name="MakeCPP"> <MSBuild Projects="src\ScriptEngine.NativeApi\ScriptEngine.NativeApi.vcxproj" Properties="Configuration=$(Configuration);Platform=%(PlatformItem.MSBuildNameCpp)"/> <MSBuild Projects="tests\native-api\AddInNative.vcxproj" Properties="Configuration=$(Configuration);Platform=%(PlatformItem.MSBuildNameCpp)"/> </Target> <Target Name="MakeFDD"> <CreateItem Include="@(PublishProjects)" AdditionalMetadata="Platform=%(PlatformItem.MSBuildName);Suffix=%(PlatformItem.Identity)"> <Output TaskParameter="Include" ItemName="BuildVariant"/> </CreateItem> <Exec Command="dotnet publish "src/%(BuildVariant.Identity)/%(BuildVariant.ProjectFile)" -f %(BuildVariant.Framework) -c $(Configuration) -p:Platform=%(BuildVariant.Platform) -p:UseAppHost=false -o "$(ArtifactsRoot)/fdd-%(BuildVariant.Suffix)/bin"" UseUtf8Encoding="Always"/> <PropertyGroup> <CppBinPrefix>$(MSBuildProjectDirectory)/src/ScriptEngine.NativeApi/bin/$(Configuration)</CppBinPrefix> </PropertyGroup> <ItemGroup> <CppX86 Include="$(CppBinPrefix)/x86/*.dll"/> <CppX64 Include="$(CppBinPrefix)/x64/*.dll"/> </ItemGroup> <Copy SourceFiles="@(CppX86)" DestinationFolder="$(ArtifactsRoot)/fdd-x86/bin" /> <Copy SourceFiles="@(CppX64)" DestinationFolder="$(ArtifactsRoot)/fdd-x64/bin" /> <ItemGroup> <BatFilesFDD Include="$(MSBuildProjectDirectory)\install\opm.bat"/> <BatFilesFDD Include="$(MSBuildProjectDirectory)\install\oscript.bat"/> <ShFilesFDD Include="$(MSBuildProjectDirectory)\install\opm"/> <ShFilesFDD Include="$(MSBuildProjectDirectory)\install\oscript"/> </ItemGroup> <Copy SourceFiles="@(BatFilesFDD);@(ShFilesFDD)" DestinationFolder="$(ArtifactsRoot)/fdd-x86/bin"/> <Copy SourceFiles="@(BatFilesFDD);@(ShFilesFDD)" DestinationFolder="$(ArtifactsRoot)/fdd-x64/bin"/> </Target> <Target Name="MakeSCD"> <ItemGroup> <RuntimeID Include="win-x64"/> <RuntimeID Include="win-x86"/> <RuntimeID Include="linux-x64"/> <RuntimeID Include="osx-x64"/> <RuntimeID Include="osx-arm64"/> </ItemGroup> <Exec Command="dotnet publish "src/oscript/oscript.csproj" -r %(RuntimeID.Identity) --self-contained -c $(Configuration) -o "$(ArtifactsRoot)/%(RuntimeID.Identity)/bin"" UseUtf8Encoding="Always"/> <PropertyGroup> <CppBinPrefix>$(MSBuildProjectDirectory)/src/ScriptEngine.NativeApi/bin/$(Configuration)</CppBinPrefix> </PropertyGroup> <ItemGroup> <CppX86 Include="$(CppBinPrefix)/x86/*.dll"/> <CppX64 Include="$(CppBinPrefix)/x64/*.dll"/> </ItemGroup> <Copy SourceFiles="@(CppX86)" DestinationFolder="$(ArtifactsRoot)/win-x86/bin" /> <Copy SourceFiles="@(CppX64)" DestinationFolder="$(ArtifactsRoot)/win-x64/bin" /> <ItemGroup> <BatFilesSCD Include="$(MSBuildProjectDirectory)\install\opm.bat"/> <ShFilesSCD Include="$(MSBuildProjectDirectory)\install\opm"/> </ItemGroup> <Copy SourceFiles="@(BatFilesSCD)" DestinationFolder="$(ArtifactsRoot)/win-x86/bin"/> <Copy SourceFiles="@(BatFilesSCD)" DestinationFolder="$(ArtifactsRoot)/win-x64/bin"/> <Copy SourceFiles="@(ShFilesSCD)" DestinationFolder="$(ArtifactsRoot)/linux-x64/bin"/> </Target> <Target Name="BuildDebugger"> <PropertyGroup> <DebuggerProject>src/VSCode.DebugAdapter/VSCode.DebugAdapter.csproj</DebuggerProject> <DebugSrc>$(DebugAdapterDir)/tmp</DebugSrc> </PropertyGroup> <MSBuild Projects="$(DebuggerProject)" Properties="OutputPath=$(DebugSrc);Configuration=Release"/> <ItemGroup> <DbgBinFiles Include="$(DebugSrc)/*.dll"/> <DbgBinFiles Include="$(DebugSrc)/*.exe"/> <DbgBinFiles Include="$(DebugSrc)/*.config"/> <DbgPackageFiles Include="$(DebugSrc)/README.md"/> <DbgPackageFiles Include="$(DebugSrc)/package.json"/> <DbgImageFiles Include="$(DebugSrc)/images/**"/> </ItemGroup> <Copy SourceFiles="@(DbgBinFiles)" DestinationFolder="$(DebugAdapterDir)/bin"/> <Copy SourceFiles="@(DbgPackageFiles)" DestinationFolder="$(DebugAdapterDir)"/> <Copy SourceFiles="@(DbgImageFiles)" DestinationFolder="$(DebugAdapterDir)/images"/> <RemoveDir Directories="$(DebugSrc)"/> </Target> <Target Name="BuildAll"> <CallTarget Targets="BuildWithCpp" Condition="'$(NoCppCompiler)' == ''"/> <CallTarget Targets="BuildWithoutCpp" Condition="'$(NoCppCompiler)' == 'True'"/> </Target> <Target Name="BuildWithCpp" DependsOnTargets="CleanAll;MakeCPP;MakeFDD;MakeSCD;BuildDebugger"> <CallTarget Targets="CleanIntermediates"/> </Target> <Target Name="BuildWithoutCpp" DependsOnTargets="CleanAll;MakeFDD;MakeSCD;BuildDebugger"> <CallTarget Targets="CleanIntermediates"/> </Target> <!-- Используется для поиска первого собранного oscript.exe --> <UsingTask TaskName="GetFirstItem" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" > <ParameterGroup> <Items ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" /> <FirstItem ParameterType="System.String" Output="true" Required="false" /> </ParameterGroup> <Task> <Reference Include="System.Xml"/> <Using Namespace="System.Linq"/> <Code Type="Fragment" Language="cs">FirstItem = Items.First().ItemSpec;</Code> </Task> </UsingTask> <Target Name="GatherLibrary"> <MakeDir Directories="$(LibDir)" /> <ItemGroup> <Executable Include="$(ArtifactsRoot)/*x64/bin/oscript.dll"/> </ItemGroup> <!-- упадет если ничего не нашлось, и это хорошо --> <GetFirstItem Items="@(Executable)"> <Output TaskParameter="FirstItem" PropertyName="Runner"/> </GetFirstItem> <Exec Command="dotnet "$(Runner)" "$(MSBuildProjectDirectory)/install/unicode-zipper.os" unpack "$(MSBuildProjectDirectory)/install/opm.ospx" "$(LibDir)/tmp"" UseUtf8Encoding="Always"/> <Exec Command="dotnet "$(Runner)" "$(MSBuildProjectDirectory)/install/unicode-zipper.os" unpack "$(LibDir)/tmp/content.zip" "$(LibDir)/opm"" UseUtf8Encoding="Always"/> <Copy SourceFiles="$(MSBuildProjectDirectory)\install\package-loader.os" DestinationFolder="$(LibDir)"/> <RemoveDir Directories="$(LibDir)/tmp"/> <PropertyGroup> <OpmEntryPoint>opm\src\cmd\opm.os</OpmEntryPoint> <OpmLaunch>dotnet $(Runner) "$(LibDir)\$(OpmEntryPoint)"</OpmLaunch> </PropertyGroup> <ItemGroup> <CoreLibraries Include="asserts"/> <CoreLibraries Include="logos"/> <CoreLibraries Include="fs"/> <CoreLibraries Include="tempfiles"/> <CoreLibraries Include="cli"/> <ConfigEnv Include="OSCRIPT_CONFIG=lib.system=$(LibDir)"/> </ItemGroup> <Exec Command="$(OpmLaunch) install -d "$(LibDir)" %(CoreLibraries.Identity)" IgnoreExitCode="false" EnvironmentVariables="@(ConfigEnv)" Condition="'$(SkipLibraryDownload)' == ''" UseUtf8Encoding="Always"/> </Target> <Target Name="ComposeDistributionFolders"> <ItemGroup> <LibraryFiles Include="$(LibDir)/**/*" Exclude="package-loader.os"/> </ItemGroup> <!--Заставить Copy копировать batching-ом в несколько директорий - не удалось :(--> <Copy SourceFiles="@(LibraryFiles)" DestinationFolder="$(ArtifactsRoot)/fdd-x64/lib/%(RecursiveDir)" /> <Copy SourceFiles="@(LibraryFiles)" DestinationFolder="$(ArtifactsRoot)/fdd-x86/lib/%(RecursiveDir)" /> <Copy SourceFiles="@(LibraryFiles)" DestinationFolder="$(ArtifactsRoot)/win-x64/lib/%(RecursiveDir)" /> <Copy SourceFiles="@(LibraryFiles)" DestinationFolder="$(ArtifactsRoot)/win-x86/lib/%(RecursiveDir)" /> <Copy SourceFiles="@(LibraryFiles)" DestinationFolder="$(ArtifactsRoot)/osx-x64/lib/%(RecursiveDir)" /> <Copy SourceFiles="@(LibraryFiles)" DestinationFolder="$(ArtifactsRoot)/osx-arm64/lib/%(RecursiveDir)" /> <Copy SourceFiles="@(LibraryFiles)" DestinationFolder="$(ArtifactsRoot)/linux-x64/lib/%(RecursiveDir)" /> <RemoveDir Directories="$(LibDir)" /> </Target> <Target Name="CleanIntermediates"> <ItemGroup> <TempFiles Include="$(ArtifactsRoot)/**/bin/*.pdb"/> <TempFiles Include="$(ArtifactsRoot)/**/bin/*.xml"/> <TempFiles Include="$(DebugAdapterDir)/**/*.pdb"/> </ItemGroup> <Delete Files="@(TempFiles)"/> </Target> <Target Name="PrepareDistributionFiles" DependsOnTargets="CleanAll;BuildAll;GatherLibrary;ComposeDistributionFolders"/> <Target Name="Test"> <CallTarget Targets="UnitTests;ScriptedTests" /> </Target> <Target Name="UnitTests"> <PropertyGroup> <TestsRoot>$(MSBuildProjectDirectory)/src/Tests</TestsRoot> </PropertyGroup> <ItemGroup> <TestAssemblies Include="OneScript.Core.Tests" /> <TestAssemblies Include="OneScript.DebugProtocol.Test" /> <TestAssemblies Include="OneScript.Dynamic.Tests" /> <TestAssemblies Include="OneScript.Language.Tests" /> </ItemGroup> <Exec WorkingDirectory="$(TestsRoot)/%(TestAssemblies.Identity)" Command="dotnet test --logger:"junit;LogFilePath=$(MSBuildProjectDirectory)/tests/%(TestAssemblies.Identity).xml"" IgnoreExitCode="true" UseUtf8Encoding="Always" /> </Target> <Target Name="ScriptedTests"> <ItemGroup> <Executable Include="$(ArtifactsRoot)/*x64/bin/oscript.dll" /> <RemoveXMLTestResult Include="$(MSBuildProjectDirectory)\tests\*.os.xml" /> </ItemGroup> <Delete Files="@(RemoveXMLTestResult)" /> <GetFirstItem Items="@(Executable)"> <Output TaskParameter="FirstItem" PropertyName="Runner"/> </GetFirstItem> <Exec WorkingDirectory="$(MSBuildProjectDirectory)\tests" Command="dotnet "$(Runner)" "$(MSBuildProjectDirectory)\tests\testrunner.os" -runall . xddReportPath ." IgnoreExitCode="true" ContinueOnError="true" UseUtf8Encoding="Always"> <Output TaskParameter="ExitCode" PropertyName="TestsExitCode"/> </Exec> </Target> <Target Name="PackDistributions"> <ItemGroup> <Executable Include="$(ArtifactsRoot)/*x64/bin/oscript.dll" /> <RuntimeID Include="fdd-x64"/> <RuntimeID Include="fdd-x86"/> <RuntimeID Include="win-x64"/> <RuntimeID Include="win-x86"/> <RuntimeID Include="osx-x64"/> <RuntimeID Include="osx-arm64"/> <RuntimeID Include="linux-x64"/> <VsixSources Include="$(DebugAdapterDir)/**" Exclude="*.vsix" /> </ItemGroup> <CreateItem Include="@(RuntimeID)" AdditionalMetadata="Path=$(ArtifactsRoot)/%(RuntimeID.Identity)"> <Output TaskParameter="Include" ItemName="BuildVariant"/> </CreateItem> <!-- упадет если ничего не нашлось, и это хорошо --> <GetFirstItem Items="@(Executable)"> <Output TaskParameter="FirstItem" PropertyName="Runner"/> </GetFirstItem> <Exec Command="dotnet "$(Runner)" "$(MSBuildProjectDirectory)\install\unicode-zipper.os" pack "$(ArtifactsRoot)/%(RuntimeID.Identity)/*" "$(ArtifactsRoot)/OneScript-$(ReleaseNumber)-%(RuntimeID.Identity).zip"" UseUtf8Encoding="Always"/> <RemoveDir Directories="$(ArtifactsRoot)/%(RuntimeID.Identity)" /> <Delete Files="@(VsixSources)" /> </Target> <!-- Nuget --> <Target Name="CreateNuget"> <ItemGroup> <NugetAbleProject Include="ScriptEngine"/> <NugetAbleProject Include="ScriptEngine.HostedScript"/> <NugetAbleProject Include="OneScript.StandardLibrary"/> <NugetAbleProject Include="OneScript.Web.Server"/> <NugetAbleProject Include="OneScript.Core"/> <NugetAbleProject Include="OneScript.Native"/> <NugetAbleProject Include="OneScript.Language"/> <NugetAbleProject Include="OneScript.DebugServices"/> <NugetAbleProject Include="OneScript.DebugProtocol"/> </ItemGroup> <PropertyGroup> <SuffixArg Condition="'$(VersionSuffix)' != ''">--version-suffix $(VersionSuffix)</SuffixArg> </PropertyGroup> <Exec Command="dotnet pack src/%(NugetAbleProject.Identity)/%(NugetAbleProject.Identity).csproj -o "$(ArtifactsRoot)/nuget" $(SuffixArg) -c Release -p:VersionPrefix=$(VersionPrefix)"/> </Target> <Target Name="PublishNuget" DependsOnTargets="CreateNuget"> <ItemGroup> <NugetAbleProject Include="ScriptEngine"/> <NugetAbleProject Include="ScriptEngine.HostedScript"/> <NugetAbleProject Include="OneScript.StandardLibrary"/> <NugetAbleProject Include="OneScript.Web.Server"/> <NugetAbleProject Include="OneScript.Core"/> <NugetAbleProject Include="OneScript.Native"/> <NugetAbleProject Include="OneScript.Language"/> <NugetAbleProject Include="OneScript.DebugServices"/> <NugetAbleProject Include="OneScript.DebugProtocol"/> </ItemGroup> <Error Text="No nuget token (/p:NugetToken=) specified" Condition="'$(NugetToken)' == ''" /> <Exec WorkingDirectory="$(MSBuildProjectDirectory)\built\nuget" Command="dotnet nuget push %(NugetAbleProject.Identity).$(ReleaseNumber).nupkg -k $(NugetToken) -s https://api.nuget.org/v3/index.json" UseUtf8Encoding="Always"/> </Target> </Project>