Explorar o código

Use separate debug and release assemblies when building
Updated editor build script accordingly
Don't generate debug information when building managed code in release mode

BearishSun %!s(int64=10) %!d(string=hai) anos
pai
achega
ab1231720c

+ 2 - 1
BansheeEditor/Include/BsBuildManager.h

@@ -36,7 +36,8 @@ namespace BansheeEngine
 		SourceRoot, /**< Absolute path to the root folder where all the prebuilt binaries and data exist. */
 		DestinationRoot, /**< Absolute path to the root folder for a build for a specific platform. */
 		NativeBinaries, /**< Folder where native binaries are stored. Relative to root. */
-		BansheeAssemblies, /**< Folder where Banshee specific assemblies are stored. Relative to root. */
+		BansheeReleaseAssemblies, /**< Folder where Banshee specific release assemblies are stored. Relative to root. */
+		BansheeDebugAssemblies, /**< Folder where Banshee specific debug assemblies are stored. Relative to root. */
 		Data /**< Folder where builtin data is stored. Relative to root. */
 	};
 

+ 4 - 2
BansheeEditor/Source/BsBuildManager.cpp

@@ -122,8 +122,10 @@ namespace BansheeEngine
 
 			return binariesPath.makeRelative(sourceRoot);
 		}
-		case BuildFolder::BansheeAssemblies:
-			return Paths::ASSEMBLY_PATH;
+		case BuildFolder::BansheeDebugAssemblies:
+			return Paths::DEBUG_ASSEMBLY_PATH;
+		case BuildFolder::BansheeReleaseAssemblies:
+			return Paths::RELEASE_ASSEMBLY_PATH;
 		case BuildFolder::Data:
 			return Paths::ENGINE_DATA_PATH;
 		}

+ 5 - 5
BansheeEngine/Include/BsApplication.h

@@ -54,11 +54,6 @@ namespace BansheeEngine
 		 */
 		Path getGameAssemblyPath() const;
 
-		/**
-		 * @brief	Returns the absolute path to the folder where built-in assemblies are located in.
-		 */
-		virtual Path getBuiltinAssemblyFolder() const;
-
 		/**
 		 * @brief	Returns the absolute path to the folder where script assemblies are located in.
 		 */
@@ -100,6 +95,11 @@ namespace BansheeEngine
 		 */
 		virtual void unloadScriptSystem();
 
+		/**
+		 * @brief	Returns the absolute path to the folder where built-in assemblies are located in.
+		 */
+		virtual Path getBuiltinAssemblyFolder() const;
+
 	protected:
 		/**
 		 * @brief	Translates render system type into library name.

+ 9 - 3
BansheeEngine/Include/BsPaths.h

@@ -15,9 +15,14 @@ namespace BansheeEngine
 	{
 	public:
 		/**
-		 * @brief	Returns a path where the managed assemblies are located. Relative to working directory.
+		 * @brief	Returns a path where the managed release assemblies are located. Relative to working directory.
 		 */
-		static const Path& getAssemblyPath();
+		static const Path& getReleaseAssemblyPath();
+
+		/**
+		 * @brief	Returns a path where the managed debug assemblies are located. Relative to working directory.
+		 */
+		static const Path& getDebugAssemblyPath();
 
 		/**
 		 * @brief	Returns a path where the builtin assets are located. Relative to working directory.
@@ -49,7 +54,8 @@ namespace BansheeEngine
 		 */
 		static Path findPath(const Path& path);
 
-		static const Path ASSEMBLY_PATH;
+		static const Path RELEASE_ASSEMBLY_PATH;
+		static const Path DEBUG_ASSEMBLY_PATH;
 		static const Path RUNTIME_DATA_PATH;
 		static const Path ENGINE_DATA_PATH;
 	};

+ 17 - 7
BansheeEngine/Source/BsApplication.cpp

@@ -159,18 +159,28 @@ namespace BansheeEngine
 
 	Path Application::getBuiltinAssemblyFolder() const
 	{
-		Path assemblyFolder = FileSystem::getWorkingDirectoryPath();
-		assemblyFolder.append(Paths::getAssemblyPath());
+		Path releaseAssemblyFolder = FileSystem::getWorkingDirectoryPath();
+		releaseAssemblyFolder.append(Paths::getReleaseAssemblyPath());
 
-		return assemblyFolder;
+		Path debugAssemblyFolder = FileSystem::getWorkingDirectoryPath();
+		debugAssemblyFolder.append(Paths::getDebugAssemblyPath());
+
+#if BS_DEBUG_MODE == 0
+		if (FileSystem::exists(releaseAssemblyFolder))
+			return releaseAssemblyFolder;
+
+		return debugAssemblyFolder;
+#else
+		if (FileSystem::exists(debugAssemblyFolder))
+			return debugAssemblyFolder;
+
+		return releaseAssemblyFolder;
+#endif
 	}
 
 	Path Application::getScriptAssemblyFolder() const
 	{
-		Path assemblyFolder = FileSystem::getWorkingDirectoryPath();
-		assemblyFolder.append(Paths::getAssemblyPath());
-
-		return assemblyFolder;
+		return getBuiltinAssemblyFolder();
 	}
 
 	String Application::getLibNameForRenderAPI(RenderAPIPlugin plugin)

+ 10 - 3
BansheeEngine/Source/BsPaths.cpp

@@ -5,13 +5,20 @@ namespace BansheeEngine
 {
 	static const Path RAW_APP_ROOT = "..\\..\\..\\"; // Path to the application root when files haven't been packaged yet (e.g. running from debugger)
 
-	const Path Paths::ASSEMBLY_PATH = "bin\\Assemblies\\";
+	const Path Paths::RELEASE_ASSEMBLY_PATH = "bin\\Assemblies\\Release\\";
+	const Path Paths::DEBUG_ASSEMBLY_PATH = "bin\\Assemblies\\Debug\\";
 	const Path Paths::RUNTIME_DATA_PATH = "Data\\";
 	const Path Paths::ENGINE_DATA_PATH = RUNTIME_DATA_PATH + "Engine\\";
 
-	const Path& Paths::getAssemblyPath()
+	const Path& Paths::getReleaseAssemblyPath()
 	{
-		static Path path = findPath(ASSEMBLY_PATH);
+		static Path path = findPath(RELEASE_ASSEMBLY_PATH);
+		return path;
+	}
+
+	const Path& Paths::getDebugAssemblyPath()
+	{
+		static Path path = findPath(DEBUG_ASSEMBLY_PATH);
 		return path;
 	}
 

+ 6 - 3
ExampleProject/Main/Main.cpp

@@ -80,7 +80,7 @@ namespace BansheeEngine
 	/**
 	 * Called when the selected video mode changes in the video mode list box.
 	 */
-	void videoModeChanged(UINT32 idx);
+	void videoModeChanged(UINT32 idx, bool enabled);
 
 	/**
 	 * Triggered whenever a virtual button is released.
@@ -133,7 +133,7 @@ int CALLBACK WinMain(
 
 namespace BansheeEngine
 {
-	Path dataPath = Application::findPath(RUNTIME_DATA_PATH);
+	Path dataPath = Paths::getRuntimeDataPath();
 	Path exampleModelPath = dataPath + "Examples\\Dragon.fbx";
 	Path exampleTexturePath = dataPath + "Examples\\Dragon.tga";
 	Path exampleShaderPath = dataPath + "Examples\\Example.bsl";
@@ -370,7 +370,7 @@ namespace BansheeEngine
 		rightLayout->addNewElement<GUIFixedSpace>(30);
 
 		// Add a profiler overlay object that is responsible for displaying CPU and GPU profiling GUI
-		profilerOverlay = guiSO->addComponent<ProfilerOverlay>(guiCamera.getInternalPtr());
+		profilerOverlay = guiSO->addComponent<ProfilerOverlay>(guiCamera->_getCamera());
 
 		// Set up video mode list box
 		// First get a list of output devices
@@ -455,6 +455,9 @@ namespace BansheeEngine
 
 	void videoModeChanged(UINT32 idx, bool enabled)
 	{
+		if (!enabled)
+			return;
+
 		selectedVideoMode = videoModes[idx];
 
 		if (fullscreen)

+ 10 - 4
MBansheeEditor/BuildManager.cs

@@ -283,7 +283,12 @@ namespace BansheeEditor
             Directory.CreateDirectory(destRoot);
 
             // Compile game assembly
-            string bansheeAssemblyFolder = GetBuildFolder(BuildFolder.BansheeAssemblies, activePlatform);
+            string bansheeAssemblyFolder;
+            if(platformInfo.Debug)
+                bansheeAssemblyFolder = GetBuildFolder(BuildFolder.BansheeDebugAssemblies, activePlatform);
+            else
+                bansheeAssemblyFolder = GetBuildFolder(BuildFolder.BansheeReleaseAssemblies, activePlatform);
+
             string srcBansheeAssemblyFolder = Path.Combine(srcRoot, bansheeAssemblyFolder);
             string destBansheeAssemblyFolder = Path.Combine(destRoot, bansheeAssemblyFolder);
 
@@ -291,7 +296,6 @@ namespace BansheeEditor
             CompilerInstance ci = ScriptCompiler.CompileAsync(ScriptAssemblyType.Game, ActivePlatform, platformInfo.Debug, destBansheeAssemblyFolder);
 
             // Copy engine assembly
-            // TODO - Copy Release version of engine assembly if not in debug mode, and Debug otherwise
             {
                 string srcFile = Path.Combine(srcBansheeAssemblyFolder, EditorApplication.EngineAssemblyName);
                 string destFile = Path.Combine(destBansheeAssemblyFolder, EditorApplication.EngineAssemblyName);
@@ -455,8 +459,10 @@ namespace BansheeEditor
             DestinationRoot,
             /// <summary>Folder where native binaries are stored. Relative to root.</summary>
             NativeBinaries,
-            /// <summary>Folder where Banshee specific assemblies are stored. Relative to root.</summary>
-            BansheeAssemblies,
+            /// <summary>Folder where Banshee specific debug assemblies are stored. Relative to root.</summary>
+            BansheeDebugAssemblies,
+            /// <summary>Folder where Banshee specific release assemblies are stored. Relative to root.</summary>
+            BansheeReleaseAssemblies,
             /// <summary>Folder where .NET framework assemblies are stored. Relative to root.</summary>
             FrameworkAssemblies,
             /// <summary>Folder where miscelaneous Mono files are stored. Relative to root.</summary>

+ 14 - 6
MBansheeEditor/EditorApplication.cs

@@ -141,11 +141,6 @@ namespace BansheeEditor
         /// </summary>
         internal static string CompilerPath { get { return Internal_GetCompilerPath(); } }
 
-        /// <summary>
-        /// Returns the path to the folder where the builtin script assemblies are located at.
-        /// </summary>
-        internal static string BuiltinAssemblyPath { get { return Internal_GetBuiltinAssemblyPath(); } }
-
         /// <summary>
         /// Returns the path to the folder where the custom script assemblies are located at.
         /// </summary>
@@ -176,6 +171,16 @@ namespace BansheeEditor
         /// </summary>
         internal static string ScriptEditorAssemblyName { get { return Internal_GetScriptEditorAssemblyName(); } }
 
+        /// <summary>
+        /// Returns the path to the folder where the builtin release script assemblies are located at.
+        /// </summary>
+        internal static string BuiltinReleaseAssemblyPath { get { return Internal_GetBuiltinReleaseAssemblyPath(); } }
+
+        /// <summary>
+        /// Returns the path to the folder where the builtin debug script assemblies are located at.
+        /// </summary>
+        internal static string BuiltinDebugAssemblyPath { get { return Internal_GetBuiltinDebugAssemblyPath(); } }
+
         private static EditorApplication instance;
         private static FolderMonitor monitor;
         private static ScriptCodeManager codeManager;
@@ -738,7 +743,10 @@ namespace BansheeEditor
         private static extern string Internal_GetCompilerPath();
 
         [MethodImpl(MethodImplOptions.InternalCall)]
-        private static extern string Internal_GetBuiltinAssemblyPath();
+        private static extern string Internal_GetBuiltinReleaseAssemblyPath();
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern string Internal_GetBuiltinDebugAssemblyPath();
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern string Internal_GetScriptAssemblyPath();

+ 4 - 4
MBansheeEditor/MBansheeEditor.csproj

@@ -16,15 +16,15 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\bin\Assemblies\</OutputPath>
+    <OutputPath>..\bin\Assemblies\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
+    <DebugType>none</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\bin\Assemblies\</OutputPath>
+    <OutputPath>..\bin\Assemblies\Release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
@@ -166,7 +166,7 @@
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-    <PostBuildEvent>$(SolutionDir)Dependencies\tools\pdb2mdb.bat "$(TargetPath)"</PostBuildEvent>
+    <PostBuildEvent>$(SolutionDir)Dependencies\tools\pdb2mdb.bat "$(TargetPath)" "$(ConfigurationName)"</PostBuildEvent>
   </PropertyGroup>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

+ 6 - 2
MBansheeEditor/ScriptCompiler.cs

@@ -66,12 +66,16 @@ namespace BansheeEditor
             string[] assemblies;
             string outputFile;
 
+            string builtinAssemblyPath = debug
+                    ? EditorApplication.BuiltinDebugAssemblyPath
+                    : EditorApplication.BuiltinReleaseAssemblyPath;
+
             string[] frameworkAssemblies = BuildManager.GetFrameworkAssemblies(platform);
             if (type == ScriptAssemblyType.Game)
             {
                 assemblyFolders = new string[]
                 {
-                    EditorApplication.BuiltinAssemblyPath, 
+                    builtinAssemblyPath, 
                     EditorApplication.FrameworkAssemblyPath
                 };
 
@@ -84,7 +88,7 @@ namespace BansheeEditor
             {
                 assemblyFolders = new string[]
                 {
-                    EditorApplication.BuiltinAssemblyPath, 
+                    builtinAssemblyPath, 
                     EditorApplication.FrameworkAssemblyPath,
                     EditorApplication.ScriptAssemblyPath
                 };

+ 4 - 4
MBansheeEngine/MBansheeEngine.csproj

@@ -19,15 +19,15 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\bin\Assemblies\</OutputPath>
+    <OutputPath>..\bin\Assemblies\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
+    <DebugType>none</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\bin\Assemblies\</OutputPath>
+    <OutputPath>..\bin\Assemblies\Release\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
@@ -155,7 +155,7 @@
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-    <PostBuildEvent>$(SolutionDir)Dependencies\tools\pdb2mdb.bat "$(TargetPath)"</PostBuildEvent>
+    <PostBuildEvent>$(SolutionDir)Dependencies\tools\pdb2mdb.bat "$(TargetPath)" "$(ConfigurationName)"</PostBuildEvent>
   </PropertyGroup>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

+ 2 - 1
SBansheeEditor/Include/BsScriptBuildManager.h

@@ -14,7 +14,8 @@ namespace BansheeEngine
 		SourceRoot, /**< Absolute path to the root folder where all the prebuilt binaries and data exist. */
 		DestinationRoot, /**< Absolute path to the root folder for a build for a specific platform. */
 		NativeBinaries, /**< Folder where native binaries are stored. Relative to root. */
-		BansheeAssemblies, /**< Folder where Banshee specific assemblies are stored. Relative to root. */
+		BansheeDebugAssemblies, /**< Folder where Banshee specific debug assemblies are stored. Relative to root. */
+		BansheeReleaseAssemblies, /**< Folder where Banshee specific release assemblies are stored. Relative to root. */
 		FrameworkAssemblies, /**< Folder where .NET framework assemblies are stored. Relative to root. */
 		Mono, /**< Folder where miscelaneous Mono files are stored. Relative to root. */
 		Data /**< Folder where builtin data is stored. Relative to root. */

+ 2 - 1
SBansheeEditor/Include/BsScriptEditorApplication.h

@@ -51,7 +51,8 @@ namespace BansheeEngine
 		static MonoString* internal_GetProjectName();
 		static bool internal_GetProjectLoaded();
 		static MonoString* internal_GetCompilerPath();
-		static MonoString* internal_GetBuiltinAssemblyPath();
+		static MonoString* internal_GetBuiltinReleaseAssemblyPath();
+		static MonoString* internal_GetBuiltinDebugAssemblyPath();
 		static MonoString* internal_GetScriptAssemblyPath();
 		static MonoString* internal_GetFrameworkAssemblyPath();
 		static MonoString* internal_GetEngineAssemblyName();

+ 5 - 2
SBansheeEditor/Source/BsScriptBuildManager.cpp

@@ -144,8 +144,11 @@ namespace BansheeEngine
 			case ScriptBuildFolder::NativeBinaries:
 				nativeFolderType = BuildFolder::NativeBinaries;
 				break;
-			case ScriptBuildFolder::BansheeAssemblies:
-				nativeFolderType = BuildFolder::BansheeAssemblies;
+			case ScriptBuildFolder::BansheeDebugAssemblies:
+				nativeFolderType = BuildFolder::BansheeDebugAssemblies;
+				break;
+			case ScriptBuildFolder::BansheeReleaseAssemblies:
+				nativeFolderType = BuildFolder::BansheeReleaseAssemblies;
 				break;
 			case ScriptBuildFolder::Data:
 				nativeFolderType = BuildFolder::Data;

+ 14 - 4
SBansheeEditor/Source/BsScriptEditorApplication.cpp

@@ -42,7 +42,8 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_GetProjectName", &ScriptEditorApplication::internal_GetProjectName);
 		metaData.scriptClass->addInternalCall("Internal_GetProjectLoaded", &ScriptEditorApplication::internal_GetProjectLoaded);
 		metaData.scriptClass->addInternalCall("Internal_GetCompilerPath", &ScriptEditorApplication::internal_GetCompilerPath);
-		metaData.scriptClass->addInternalCall("Internal_GetBuiltinAssemblyPath", &ScriptEditorApplication::internal_GetBuiltinAssemblyPath);
+		metaData.scriptClass->addInternalCall("Internal_GetBuiltinReleaseAssemblyPath", &ScriptEditorApplication::internal_GetBuiltinReleaseAssemblyPath);
+		metaData.scriptClass->addInternalCall("Internal_GetBuiltinDebugAssemblyPath", &ScriptEditorApplication::internal_GetBuiltinDebugAssemblyPath);
 		metaData.scriptClass->addInternalCall("Internal_GetScriptAssemblyPath", &ScriptEditorApplication::internal_GetScriptAssemblyPath);
 		metaData.scriptClass->addInternalCall("Internal_GetFrameworkAssemblyPath", &ScriptEditorApplication::internal_GetFrameworkAssemblyPath);
 		metaData.scriptClass->addInternalCall("Internal_GetEngineAssemblyName", &ScriptEditorApplication::internal_GetEngineAssemblyName);
@@ -157,11 +158,20 @@ namespace BansheeEngine
 		return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), compilerPath.toWString());
 	}
 
-	MonoString* ScriptEditorApplication::internal_GetBuiltinAssemblyPath()
+	MonoString* ScriptEditorApplication::internal_GetBuiltinReleaseAssemblyPath()
 	{
-		Path assemblyFolder = gEditorApplication().getBuiltinAssemblyFolder();
+		Path releaseAssemblyFolder = FileSystem::getWorkingDirectoryPath();
+		releaseAssemblyFolder.append(Paths::getReleaseAssemblyPath());
 
-		return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), assemblyFolder.toWString());
+		return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), releaseAssemblyFolder.toWString());
+	}
+
+	MonoString* ScriptEditorApplication::internal_GetBuiltinDebugAssemblyPath()
+	{
+		Path debugAssemblyFolder = FileSystem::getWorkingDirectoryPath();
+		debugAssemblyFolder.append(Paths::getDebugAssemblyPath());
+
+		return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), debugAssemblyFolder.toWString());
 	}
 
 	MonoString* ScriptEditorApplication::internal_GetScriptAssemblyPath()

+ 1 - 1
SBansheeEditor/Source/BsScriptPlatformInfo.cpp

@@ -66,7 +66,7 @@ namespace BansheeEngine
 	MonoObject* ScriptPlatformInfo::internal_GetMainScene(ScriptPlatformInfoBase* thisPtr)
 	{
 		HPrefab prefab = thisPtr->getPlatformInfo()->mainScene;
-
+		
 		if (prefab != nullptr)
 		{
 			ScriptPrefab* scriptPrefab;

+ 22 - 0
Scripts/build_editor_win_x64.py

@@ -0,0 +1,22 @@
+#!/usr/bin/python
+
+# Builds and packages the editor. Make sure you have MSBuild
+# installed and the path is valid.
+
+# Usage: "build_editor_win_x64 $Configuration"
+# Where: $Configuration - e.g. DebugRelease, Release
+
+import os
+
+msbuildPath = "C:\\Program Files (x86)\\MSBuild\\12.0\\Bin\\amd64"
+configuration = 'DebugRelease' #sys.argv[1]
+solutionPath = "..\\BansheeEngine.sln"
+
+if not os.path.exists(msbuildPath):
+    print("MSBuild path is not valid. Used path {0}: ".format(msbuildPath))
+    exit;
+
+os.environ["PATH"] += os.pathsep + msbuildPath
+os.system("msbuild {0} /p:Configuration=DebugRelease;Platform=x64".format(solutionPath))
+os.system("msbuild {0} /p:Configuration=Release;Platform=x64".format(solutionPath))
+os.system("package_editor.py " + configuration)

+ 15 - 12
Scripts/package_editor.py

@@ -38,15 +38,18 @@ def ignore_data(path, entries):
 
     return list(set(dataFoldersToIgnore) & set(entries))    
 
-if os.path.exists(outputBaseFolder):
-    shutil.rmtree(outputBaseFolder)
-
-os.makedirs(outputBaseFolder)
-shutil.copytree(inputDataFolder, outputDataFolder, False, ignore_data)
-shutil.copytree(inputAssembliesFolder, outputAssembliesFolder)
-shutil.copytree(inputMonoFolder, outputMonoFolder)
-
-for root, dirs, files in os.walk(inputLibFolder):
-    for file in files:
-        filePath = os.path.join(root, file)
-        shutil.copy(filePath, outputLibFolder)
+def package_editor():
+    if os.path.exists(outputBaseFolder):
+        shutil.rmtree(outputBaseFolder)
+
+    os.makedirs(outputBaseFolder)
+    shutil.copytree(inputDataFolder, outputDataFolder, False, ignore_data)
+    shutil.copytree(inputAssembliesFolder, outputAssembliesFolder)
+    shutil.copytree(inputMonoFolder, outputMonoFolder)
+
+    for root, dirs, files in os.walk(inputLibFolder):
+        for file in files:
+            filePath = os.path.join(root, file)
+            shutil.copy(filePath, outputLibFolder)
+
+package_editor()