private void OnGUI() { if (GUILayout.Button("标记")) { SetPackingTagAndAssetBundle(); //生成打包配置信息 GenerateABRelation.GenerateRelation(); } if (GUILayout.Button("清除标记")) { ClearPackingTagAndAssetBundle(); } this.platformType = (PlatformType)EditorGUILayout.EnumPopup(platformType); if (platformType == PlatformType.None) { platformType = PlatformType.Android; } this.isContainAB = EditorGUILayout.Toggle("是否同将资源打进EXE: ", this.isContainAB); this.buildOptions = (BuildOptions)EditorGUILayout.EnumFlagsField("BuildOptions(可多选): ", this.buildOptions); this.buildAssetBundleOptions = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField("BuildAssetBundleOptions(可多选): ", this.buildAssetBundleOptions); if (GUILayout.Button("开始打包")) { if (this.platformType == PlatformType.None) { Debug.LogError("请选择打包平台!"); return; } BuildHelper.Build(this.platformType, this.buildAssetBundleOptions, this.buildOptions, this.isContainAB); } }
public void WhenBuild_IfNoPhysicalDirectoryExist_ShouldThrow() { // Arrange var mock = new CoreMockGenerator() .MockApplication() .MockApplicationPhysicalDirectoryDoesNotExist(); // Act, Assert var helper = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object); var exception = Assert.Throws <Exception>(() => helper.Build( mock.MockApplicationPhysicalPath, mock.MockApplicationName)); Assert.Equal(string.Format("Application directory '{0}' does not exist.", mock.MockApplicationPhysicalPath), exception.Message); }
static void Main(string[] args) { // Debugger.Launch(); var build = new BuildHelper(); build.OutputMessage += (s, e) => { Console.WriteLine(e.Message); }; var buildFile = args.FirstOrDefault(x => x.StartsWith("-b:")); buildFile = string.IsNullOrWhiteSpace(buildFile) ? null : buildFile.Substring(3); //if (buildFile == null) //{ // build.Output("Build"); //} build.Build(buildFile); }
public void WhenBuild_IfProcessStartNormallyFromDotNet_ShouldWorkOk() { // Arrange var mock = new CoreMockGenerator(); mock.MockApplication() .MockApplicationPhysicalDirectory() .MockApplicationProjectFile() .MockGetMsBuildDotNetMsbuild() .MockBuildProcessStartNormally(mock.MockDotNetMsbuilPath); // Act, Assert var helper = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object); helper.Build( mock.MockApplicationPhysicalPath, mock.MockApplicationName); }
public void WhenBuild_IfMsbuildNotFound_ShouldThrow() { // Arrange var mock = new CoreMockGenerator(); mock.MockApplication() .MockApplication() .MockApplicationPhysicalDirectory() .MockApplicationProjectFile() .MockGetMsBuildPathNotFound(); // Act, Assert var helper = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object); var exception = Assert.Throws <Exception>(() => helper.Build( mock.MockApplicationPhysicalPath, mock.MockApplicationName)); Assert.Equal("MsBuild.exe was not found on the machine.", exception.Message); }
public void WhenBuild_IfProcessStartReturnsFalse_ShouldThrow() { // Arrange var mock = new CoreMockGenerator(); mock.MockApplication() .MockApplicationPhysicalDirectory() .MockApplicationProjectFile() .MockGetMsBuildPathProgramFilesMsbuild() .MockBuildProcessStartFalse(mock.MockProgramFilesMsbuilPath); // Act, Assert var helper = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object); var exception = Assert.Throws <Exception>(() => helper.Build( mock.MockApplicationPhysicalPath, mock.MockApplicationName)); Assert.Equal(string.Format(@"Failed to start msbuild to build a project '{0}' at '{1}'", mock.MockApplicationName + ".csproj", mock.MockApplicationPhysicalPath), exception.Message); }
public void WhenBuild_IfBuildProcessExitCodeNotZero_ShouldThrow() { // Arrange var mock = new CoreMockGenerator(); mock.MockApplication() .MockApplicationPhysicalDirectory() .MockApplicationProjectFile() .MockGetMsBuildDotNetMsbuild() .MockBuildProcessExitCodeNotZero(mock.MockDotNetMsbuilPath); // Act, Assert var helper = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object); var exception = Assert.Throws <Exception>(() => helper.Build( mock.MockApplicationPhysicalPath, mock.MockApplicationName)); Assert.Equal(string.Format("There were some errors while trying to build a project '{0}' at '{1}': {2}", mock.MockApplicationName + ".csproj", mock.MockApplicationPhysicalPath, mock.MockBuildOutput), exception.Message); }
public static void BuildWeb() { BuildHelper.Build(BuildTarget.WebGL); }
public static void BuildLinuxUniversal() { BuildHelper.Build(BuildTarget.StandaloneLinuxUniversal); }
public static void BuildLinux64() { BuildHelper.Build(BuildTarget.StandaloneLinux64); }
public static void BuildMac() { BuildHelper.Build(BuildTarget.StandaloneOSX); }
public static void BuildWin64() { BuildHelper.Build(BuildTarget.StandaloneWindows64); }
private void OnGUI() { if (GUILayout.Button("打开PD")) { string output = Application.persistentDataPath; if (!Directory.Exists(output)) { Directory.CreateDirectory(output); } output = output.Replace("/", "\\"); System.Diagnostics.Process.Start("explorer.exe", output); } this.platformType = (PlatformType)EditorGUILayout.EnumPopup(platformType); isBuildInSA = EditorGUILayout.Toggle("是否同将资源打进SA: ", isBuildInSA); if (GUILayout.Button("开始打包")) { if (this.platformType == PlatformType.None) { Debug.Log("请选择打包平台!"); return; } string fold = ResourceConfig.BD_AB + ResourceConfig.Platform; if (!Directory.Exists(fold)) { Directory.CreateDirectory(fold); } //if (!Directory.Exists(ResourceConfig.URL_AB + ResourceConfig.Platform)) //{ // Debug.Log("没有 路径 = " + ResourceConfig.URL_AB + ResourceConfig.Platform); // return; //} DeleteFileOrFolder(ResourceConfig.BD_AB + ResourceConfig.Platform); BuildHelper.Build(this.platformType, isBuildInSA); } if (GUILayout.Button("设置标签")) { string path = string.Format("Assets/Download"); if (Directory.Exists(path)) { DirectoryInfo direction = new DirectoryInfo(path); FileInfo[] files = direction.GetFiles("*", SearchOption.AllDirectories); Debug.Log(files.Length); for (int i = 0; i < files.Length; i++) { if (files[i].Name.EndsWith(".meta")) { continue; } //if (files[i].Name.EndsWith(".bytes")) //{ // continue; //} string currentFile = files[i].FullName.Replace("\\", "/").Replace(@"\", "/"); int startIndex = currentFile.IndexOf("Assets"); string assetFile = currentFile.Substring(startIndex, currentFile.Length - startIndex); Debug.Log(assetFile); string sceneName = Path.GetFileNameWithoutExtension(assetFile); AssetImporter ai = AssetImporter.GetAtPath(assetFile); ai.assetBundleName = sceneName + ".assetbundle"; } } } if (GUILayout.Button("删除资源")) { if (!Directory.Exists(ResourceConfig.SA_AB + ResourceConfig.Platform)) { return; } DeleteFileOrFolder(ResourceConfig.SA_AB + ResourceConfig.Platform); AssetDatabase.Refresh(); } if (GUILayout.Button("打包轻包")) { BuildHelper.BuildInitial(ResourceConfig.SA_AB + platformType); } }