From ad450adeb5bacdb31b6089f8901c2b253ffa7b15 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 24 Oct 2019 13:53:22 -0700 Subject: [PATCH 01/19] Added a Unity project with reference to MSBuildForUnity and 2 asmdef to signify two components --- .../Project.Unity/.gitignore | 65 ++ .../Project.Unity/Assets/Component1.meta | 8 + .../Assets/Component1/Component1.asmdef | 3 + .../Assets/Component1/Component1.asmdef.meta | 7 + .../Project.Unity/Assets/Component2.meta | 8 + .../Assets/Component2/Component2.cs | 18 + .../Assets/Component2/Component2.cs.meta | 11 + .../Project.Unity/Assets/Scenes.meta | 8 + .../Assets/Scenes/SampleScene.unity | 259 ++++++++ .../Assets/Scenes/SampleScene.unity.meta | 7 + .../Project.Unity/Packages/manifest.json | 41 ++ .../ProjectSettings/AudioManager.asset | 17 + .../ProjectSettings/ClusterInputManager.asset | 6 + .../ProjectSettings/DynamicsManager.asset | 30 + .../ProjectSettings/EditorBuildSettings.asset | 8 + .../ProjectSettings/EditorSettings.asset | 21 + .../ProjectSettings/GraphicsSettings.asset | 62 ++ .../ProjectSettings/InputManager.asset | 295 ++++++++ .../ProjectSettings/NavMeshAreas.asset | 91 +++ .../ProjectSettings/NetworkManager.asset | 8 + .../ProjectSettings/Physics2DSettings.asset | 38 ++ .../ProjectSettings/PresetManager.asset | 27 + .../ProjectSettings/ProjectSettings.asset | 628 ++++++++++++++++++ .../ProjectSettings/ProjectVersion.txt | 1 + .../ProjectSettings/QualitySettings.asset | 190 ++++++ .../ProjectSettings/TagManager.asset | 43 ++ .../ProjectSettings/TimeManager.asset | 9 + .../UnityConnectSettings.asset | 34 + .../ProjectSettings/VFXManager.asset | 11 + Samples/ExternalDependencies/README.md | 3 + 30 files changed, 1957 insertions(+) create mode 100644 Samples/ExternalDependencies/Project.Unity/.gitignore create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Scenes.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Packages/manifest.json create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/AudioManager.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/ClusterInputManager.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/DynamicsManager.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorBuildSettings.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorSettings.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/GraphicsSettings.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/InputManager.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/NavMeshAreas.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/NetworkManager.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/Physics2DSettings.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/PresetManager.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectVersion.txt create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/QualitySettings.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/TagManager.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/TimeManager.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/UnityConnectSettings.asset create mode 100644 Samples/ExternalDependencies/Project.Unity/ProjectSettings/VFXManager.asset create mode 100644 Samples/ExternalDependencies/README.md diff --git a/Samples/ExternalDependencies/Project.Unity/.gitignore b/Samples/ExternalDependencies/Project.Unity/.gitignore new file mode 100644 index 0000000..ac6ba34 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/.gitignore @@ -0,0 +1,65 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Mm]emoryCaptures/ + +# Never ignore Asset meta data +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties + +# Custom MSBuildForUnity Project Related ignore entries +/MSBuild/* +!/MSBuild/Publish/ +/MSBuild/Publish/**/*.dll +/MSBuild/Publish/**/*.pdb \ No newline at end of file diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component1.meta new file mode 100644 index 0000000..2221dde --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9844e937779e6064094d9db36f0be68e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef new file mode 100644 index 0000000..f5b3ed1 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef @@ -0,0 +1,3 @@ +{ + "name": "Component1" +} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef.meta new file mode 100644 index 0000000..f1fdc98 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5f8add30801bb374783bd76b2b9c3cf1 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2.meta new file mode 100644 index 0000000..8b99bdd --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4ce2c23baf798b241ba8e6f8c6dd64f5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs new file mode 100644 index 0000000..3e37dc2 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Component2 : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs.meta new file mode 100644 index 0000000..d325a92 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0239bf7fc5d0364aa8ca09615b4765e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Scenes.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Scenes.meta new file mode 100644 index 0000000..766b775 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b57b086d1854d941ad9715161874302 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity b/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity new file mode 100644 index 0000000..114459f --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity @@ -0,0 +1,259 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 170076734} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 10 + m_AtlasSize: 512 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 256 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &170076733 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 170076735} + - component: {fileID: 170076734} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &170076734 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 170076733} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &170076735 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 170076733} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &534669902 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 534669905} + - component: {fileID: 534669904} + - component: {fileID: 534669903} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &534669903 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_Enabled: 1 +--- !u!20 &534669904 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &534669905 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity.meta new file mode 100644 index 0000000..04eb8bf --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5eefe6cfdbe9c9f488540fa425ce5116 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Packages/manifest.json b/Samples/ExternalDependencies/Project.Unity/Packages/manifest.json new file mode 100644 index 0000000..9b3c9af --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Packages/manifest.json @@ -0,0 +1,41 @@ +{ + "dependencies": { + "com.unity.ads": "2.0.8", + "com.unity.analytics": "3.2.2", + "com.unity.collab-proxy": "1.2.15", + "com.unity.package-manager-ui": "2.0.7", + "com.unity.purchasing": "2.0.3", + "com.unity.textmeshpro": "1.4.1", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0", + "com.microsoft.msbuildforunity": "file:../../../../Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity" + } +} diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/AudioManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..4f31e74 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/AudioManager.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ClusterInputManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/DynamicsManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..b3c263d --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorBuildSettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..0147887 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: [] + m_configObjects: {} diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorSettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..29dea52 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorSettings.asset @@ -0,0 +1,21 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 2 + m_DefaultBehaviorMode: 0 + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd + m_ProjectGenerationRootNamespace: + m_UserGeneratedProjectSuffix: + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/GraphicsSettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..cd1c3d6 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,62 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_CustomRenderPipeline: {fileID: 0} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_LightsUseLinearIntensity: 0 + m_LightsUseColorTemperature: 0 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/InputManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..17c8f53 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/InputManager.asset @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/NavMeshAreas.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/NetworkManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/NetworkManager.asset new file mode 100644 index 0000000..5dc6a83 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/NetworkManager.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!149 &1 +NetworkManager: + m_ObjectHideFlags: 0 + m_DebugLevel: 0 + m_Sendrate: 15 + m_AssetToPrefab: {} diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/Physics2DSettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..57760e2 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,38 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_ChangeStopsCallbacks: 0 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/PresetManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..820e662 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/PresetManager.asset @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + m_DefaultList: + - type: + m_NativeTypeID: 108 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, + type: 2} + - type: + m_NativeTypeID: 1020 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, + type: 2} + - type: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, + type: 2} diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..7be200d --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,628 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 15 + productGUID: 7a02bfe69b3862e44ac43995b563fb45 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: Project.Unity + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 0 + m_MTRendering: 1 + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosAppInBackgroundBehavior: 0 + displayResolutionDialog: 1 + iosAllowHTTPDownload: 1 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 0 + androidBlitType: 0 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 1 + captureSingleScreen: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + graphicsJobs: 0 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + graphicsJobMode: 0 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 0 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + vulkanEnableSetSRGBWrite: 0 + m_SupportedAspectRatios: + 4:3: 1 + 5:4: 1 + 16:10: 1 + 16:9: 1 + Others: 1 + bundleVersion: 0.1 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + isWsaHolographicRemotingEnabled: 0 + vrSettings: + cardboard: + depthFormat: 0 + enableTransitionView: 0 + daydream: + depthFormat: 0 + useSustainedPerformanceMode: 0 + enableVideoLayer: 0 + useProtectedVideoMemory: 0 + minimumSupportedHeadTracking: 0 + maximumSupportedHeadTracking: 1 + hololens: + depthFormat: 1 + depthBufferSharingEnabled: 1 + oculus: + sharedDepthBuffer: 1 + dashSupport: 1 + enable360StereoCapture: 0 + protectGraphicsMemory: 0 + enableFrameTimingStats: 0 + useHDRDisplay: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.1 + applicationIdentifier: {} + buildNumber: {} + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 16 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + APKExpansionFiles: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 1 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSTargetOSVersionString: 9.0 + tvOSSdkVersion: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 9.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + iPhoneSplashScreen: {fileID: 0} + iPhoneHighResSplashScreen: {fileID: 0} + iPhoneTallHighResSplashScreen: {fileID: 0} + iPhone47inSplashScreen: {fileID: 0} + iPhone55inPortraitSplashScreen: {fileID: 0} + iPhone55inLandscapeSplashScreen: {fileID: 0} + iPhone58inPortraitSplashScreen: {fileID: 0} + iPhone58inLandscapeSplashScreen: {fileID: 0} + iPadPortraitSplashScreen: {fileID: 0} + iPadHighResPortraitSplashScreen: {fileID: 0} + iPadLandscapeSplashScreen: {fileID: 0} + iPadHighResLandscapeSplashScreen: {fileID: 0} + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreenCustomXibPath: + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreeniPadCustomXibPath: + iOSUseLaunchScreenStoryboard: 0 + iOSLaunchScreenCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + iOSRenderExtraFrameOnPause: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea + templatePackageId: com.unity.template.3d@1.3.0 + templateDefaultScene: Assets/Scenes/SampleScene.unity + AndroidTargetArchitectures: 5 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 1 + AndroidIsGame: 1 + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + resolutionDialogBanner: {fileID: 0} + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: tvOS + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: iPhone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 0b00000008000000 + m_Automatic: 1 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AppleTVSupport + m_APIs: 10000000 + m_Automatic: 0 + - m_BuildTarget: WebGLSupport + m_APIs: 0b000000 + m_Automatic: 1 + m_BuildTargetVRSettings: + - m_BuildTarget: Standalone + m_Enabled: 0 + m_Devices: + - Oculus + - OpenVR + m_BuildTargetEnableVuforiaSettings: [] + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchTouchScreenUsage: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 3 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchPlayerConnectionEnabled: 1 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 1 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 0 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + spritePackerPolicy: + webGLMemorySize: 256 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 1 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + scriptingDefineSymbols: {} + platformArchitecture: {} + scriptingBackend: {} + il2cppCompilerConfiguration: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + allowUnsafeCode: 0 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + apiCompatibilityLevelPerPlatform: {} + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: Template_3D + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: Template_3D + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, + a: 1} + metroSplashScreenUseBackgroundColor: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + metroCompilationOverrides: 1 + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + xboxOneScriptCompiler: 1 + XboxOneOverrideIdentityName: + vrEditorSettings: + daydream: + daydreamIconForeground: {fileID: 0} + daydreamIconBackground: {fileID: 0} + cloudServicesEnabled: + UNet: 1 + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_PrivateKeyPath: + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + facebookSdkVersion: 7.9.4 + facebookAppId: + facebookCookies: 1 + facebookLogging: 1 + facebookStatus: 1 + facebookXfbml: 0 + facebookFrictionlessRequests: 1 + apiCompatibilityLevel: 6 + cloudProjectId: + framebufferDepthMemorylessMode: 0 + projectName: + organizationId: + cloudEnabled: 0 + enableNativePlatformBackendsForNewInputSystem: 0 + disableOldInputManagerSupport: 0 + legacyClampBlendShapeWeights: 0 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectVersion.txt b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..872caec --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectVersion.txt @@ -0,0 +1 @@ +m_EditorVersion: 2018.4.7f1 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/QualitySettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..0621bef --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/QualitySettings.asset @@ -0,0 +1,190 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 4 + m_QualitySettings: + - serializedVersion: 2 + name: Very Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Medium + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 0.7 + maximumLODLevel: 0 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 2 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Very High + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Ultra + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + Nintendo 3DS: 5 + Nintendo Switch: 5 + PS4: 5 + PSP2: 2 + Standalone: 5 + Tizen: 2 + WebGL: 3 + WiiU: 5 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/TagManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..17cb803 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/TagManager.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - PostProcessing + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/TimeManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..06bcc6d --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.1 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/UnityConnectSettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..fa0b146 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/VFXManager.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..6e0eaca --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/VFXManager.asset @@ -0,0 +1,11 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 diff --git a/Samples/ExternalDependencies/README.md b/Samples/ExternalDependencies/README.md new file mode 100644 index 0000000..50e44f6 --- /dev/null +++ b/Samples/ExternalDependencies/README.md @@ -0,0 +1,3 @@ +# External Dependencies Sample + +This sample shows how Unity project can establish direct dependencies on external C# projects and NuGet packages and have it all resolved correctly. \ No newline at end of file From d960fbbc1e4bde8706ab98e6747cd917c4ffaa0f Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 24 Oct 2019 16:11:55 -0700 Subject: [PATCH 02/19] Added props/targets templates, and also refactored to exporter model --- .../SDKProjectTemplate.g.props.template | 129 +++++++ .../SDKProjectTemplate.g.props.template.meta | 7 + .../SDKProjectTemplate.g.targets.template | 30 ++ ...SDKProjectTemplate.g.targets.template.meta | 7 + .../ProjectGenerator/Scripts/CSProjectInfo.cs | 183 +-------- .../ProjectGenerator/Scripts/Exporters.meta | 8 + .../Scripts/Exporters/IProjectExporter.cs | 15 + .../Exporters/IProjectExporter.cs.meta | 11 + .../Exporters/TemplatedProjectExporter.cs | 347 ++++++++++++++++++ .../TemplatedProjectExporter.cs.meta | 11 + .../ProjectGenerator/Scripts/MSBuildTools.cs | 10 +- .../ProjectGenerator/Scripts/TemplateFiles.cs | 22 +- .../Scripts/UnityProjectInfo.cs | 141 ------- 13 files changed, 589 insertions(+), 332 deletions(-) create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs.meta diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template new file mode 100644 index 0000000..48556a9 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + ..\Output\ + $(MSBuildThisFileDirectory)$(RelativeBuildFolder) + false + + false + + + + $(MSBuildThisFileDirectory)..\Publish\ + + + + + + + + InEditor + + + + $(Platform) + + + + $(Configuration) + + + + InEditor;Player + + + + + + Release + AnyCPU + + + + Debug + + + + $(BuildFolder)obj\$(ProjectGuid)\ + $(BuildFolder)bin\ + $(BaseIntermediateOutputPath)$(UnityConfiguration)\$(UnityPlatform)\ + + + + + $(BuildFolder)$(UnityConfiguration)\$(UnityPlatform)\ + $(OutputPath) + + + $(BuildFolder)$(UnityConfiguration)\$(UnityPlatform)\$(MSBuildProjectName)\ + $(OutputPath) + + + + + + + + {CandidateAssemblyFiles};{HintPathFromItem};{RawFileName}; + + + + + + + + + $(AssemblySearchPaths); + true + + + + $(AssemblySearchPaths); + + + + $(DefaultItemExcludes)obj;bin;*.asmdef;*.asmdef.meta;*.csmap; + + false + + + + + + + All + + + + + + false + + + + + + + + + + + + + Always + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template.meta new file mode 100644 index 0000000..4d48782 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0140e0bb33cdbb24a91c4201bbdb21e4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template new file mode 100644 index 0000000..134401a --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template @@ -0,0 +1,30 @@ + + + + + + + $(BuildDependsOn) + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template.meta new file mode 100644 index 0000000..86a2ff1 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bf2e3b7e7e5c0464cb599fda0d57574e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/CSProjectInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/CSProjectInfo.cs index c9af3d9..e4de04c 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/CSProjectInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/CSProjectInfo.cs @@ -61,6 +61,8 @@ public class CSProjectInfo : ReferenceItemInfo /// public IReadOnlyCollection> ProjectDependencies { get; } + public IReadOnlyCollection> PluginDependencies { get; } + /// /// Creates a new instance of the CSProject info. /// @@ -85,6 +87,7 @@ internal CSProjectInfo(UnityProjectInfo unityProjectInfo, AssemblyDefinitionInfo } ProjectDependencies = new ReadOnlyCollection>(csProjectDependencies); + PluginDependencies = new ReadOnlyCollection>(pluginAssemblyDependencies); } private ProjectType GetProjectType(AssemblyDefinitionInfo assemblyDefinitionInfo) @@ -166,187 +169,7 @@ private void AddDependency(List> items, T referenceInf new HashSet(PlayerPlatforms.Keys.Intersect(referenceInfo.PlayerPlatforms.Keys)))); } - /// - /// Exports the project given a template. - /// - /// The template of the csproj file. - /// The output folder where all the props were added. - internal void ExportProject(string projectFileTemplateText, string projectFilesPath) - { - if (File.Exists(ReferencePath.AbsolutePath)) - { - File.Delete(ReferencePath.AbsolutePath); - } - - if (Utilities.TryGetXMLTemplate(projectFileTemplateText, "PROJECT_REFERENCE_SET", out string projectReferenceSetTemplate) - && Utilities.TryGetXMLTemplate(projectFileTemplateText, "SOURCE_INCLUDE", out string sourceIncludeTemplate) - && Utilities.TryGetXMLTemplate(projectFileTemplateText, "SUPPORTED_PLATFORM_BUILD_CONDITION", out string suportedPlatformBuildConditionTemplate)) - { - List sourceIncludes = new List(); - Dictionary sourceGuidToClassName = new Dictionary(); - foreach (SourceFileInfo source in AssemblyDefinitionInfo.GetSources()) - { - ProcessSourceFile(source, sourceIncludeTemplate, sourceIncludes, sourceGuidToClassName); - } - - File.WriteAllLines(Path.Combine(projectFilesPath, $"{Guid.ToString()}.csmap"), sourceGuidToClassName.Select(t => $"{t.Key.ToString("N")}:{t.Value}")); - - List supportedPlatformBuildConditions = new List(); - PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "InEditor", InEditorPlatforms); - PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "Player", PlayerPlatforms); - - HashSet inEditorSearchPaths = new HashSet(), playerSearchPaths = new HashSet(); - string projectReferences = string.Join("\r\n", CreateProjectReferencesSet(projectReferenceSetTemplate, inEditorSearchPaths, true), CreateProjectReferencesSet(projectReferenceSetTemplate, playerSearchPaths, false)); - Dictionary tokens = new Dictionary() - { - { "", Guid.ToString() }, - { "", AssemblyDefinitionInfo.allowUnsafeCode.ToString() }, - { "", MSBuildTools.CSharpVersion }, - - { "", "false" }, // Default to false - - { "", (ProjectType == ProjectType.EditorAsmDef || ProjectType == ProjectType.PredefinedEditorAssembly).ToString() }, - { "", Path.GetDirectoryName(EditorApplication.applicationPath) + "\\"}, - - { "", UnityProjectInfo.AvailablePlatforms.First(t=>t.BuildTarget == BuildTarget.StandaloneWindows).Name }, - - { "", string.Join(";", UnityProjectInfo.AvailablePlatforms.Select(t=>t.Name)) }, - { "", string.Join(";", inEditorSearchPaths) }, - { "", string.Join(";", playerSearchPaths) }, - - { "##PLATFORM_PROPS_FOLDER_PATH_TOKEN##", projectFilesPath }, - - { projectReferenceSetTemplate, projectReferences }, - { sourceIncludeTemplate, string.Join("\r\n", sourceIncludes) }, - { suportedPlatformBuildConditionTemplate, string.Join("\r\n", supportedPlatformBuildConditions) } - }; - - projectFileTemplateText = Utilities.ReplaceTokens(projectFileTemplateText, tokens, true); - } - else - { - Debug.LogError("Failed to find ProjectReferenceSet and/or Source_Include templates in the project template file."); - } - - File.WriteAllText(ReferencePath.AbsolutePath, projectFileTemplateText); - } - - private void ProcessSourceFile(SourceFileInfo sourceFile, string sourceIncludeTemplate, List sourceIncludes, Dictionary sourceGuidToClassName) - { - // Get the entry for the map - sourceGuidToClassName.Add(sourceFile.Guid, sourceFile.ClassType?.FullName); - - string linkPath = Utilities.GetRelativePath(AssemblyDefinitionInfo.Directory.FullName, sourceFile.File.FullName); - - string relativeSourcePath; - - switch (sourceFile.AssetLocation) - { - case AssetLocation.BuiltInPackage: - relativeSourcePath = sourceFile.File.FullName; - return; - case AssetLocation.Project: - relativeSourcePath = $"..\\..\\{Utilities.GetAssetsRelativePathFrom(sourceFile.File.FullName)}"; - break; - case AssetLocation.Package: - relativeSourcePath = $"..\\..\\{Utilities.GetPackagesRelativePathFrom(sourceFile.File.FullName)}"; - break; - case AssetLocation.PackageCopy: - relativeSourcePath = $"..\\{Utilities.GetPackagesRelativePathFrom(sourceFile.File.FullName)}"; - break; - case AssetLocation.External: - relativeSourcePath = sourceFile.File.FullName; - Debug.LogWarning($"Referencing external source file with full path '{sourceFile.File.FullName}'"); - break; - default: throw new InvalidDataException("Unknown asset location."); - } - - sourceIncludes.Add(Utilities.ReplaceTokens(sourceIncludeTemplate, new Dictionary() - { - {"##RELATIVE_SOURCE_PATH##", relativeSourcePath }, - {"##PROJECT_LINK_PATH##", linkPath } - })); - } - - private void PopulateSupportedPlatformBuildConditions(List supportedPlatformBuildConditions, string template, string configuration, IReadOnlyDictionary platforms) - { - foreach (KeyValuePair platform in platforms) - { - supportedPlatformBuildConditions.Add(Utilities.ReplaceTokens(template, new Dictionary() - { - { "##SUPPORTED_CONFIGURATION_TOKEN##", configuration }, - { "##SUPPORTED_PLATFORM_TOKEN##", platform.Value.Name } - })); - } - } - - private string CreateProjectReferencesSet(string template, HashSet additionalSearchPaths, bool inEditor) - { - if (Utilities.TryGetXMLTemplate(template, "PROJECT_REFERENCE", out string projectReferenceTemplate) - && Utilities.TryGetXMLTemplate(template, "PLUGIN_REFERENCE", out string pluginReferenceTemplate)) - { - List projectReferences = new List(); - foreach (CSProjectDependency dependency in csProjectDependencies) - { - List platformConditions = GetPlatformConditions(inEditor ? InEditorPlatforms : PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); - - projectReferences.Add(Utilities.ReplaceTokens(projectReferenceTemplate, new Dictionary() - { - { "##REFERENCE_TOKEN##", $"{dependency.Dependency.Name}.csproj" }, - { "", dependency.Dependency.ReferencePath.AbsolutePath }, - { "##CONDITION_TOKEN##", platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)} - })); - } - - List pluginReferences = new List(); - foreach (CSProjectDependency dependency in pluginAssemblyDependencies) - { - if (dependency.Dependency.Type == PluginType.Native) - { - continue; - } - List platformConditions = GetPlatformConditions(inEditor ? InEditorPlatforms : PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); - - pluginReferences.Add(Utilities.ReplaceTokens(pluginReferenceTemplate, new Dictionary() - { - { "##REFERENCE_TOKEN##", dependency.Dependency.Name }, - { "##CONDITION_TOKEN##", platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)}, - { "", dependency.Dependency.ReferencePath.AbsolutePath } - })); - - additionalSearchPaths.Add(Path.GetDirectoryName(dependency.Dependency.ReferencePath.AbsolutePath)); - } - - return Utilities.ReplaceTokens(template, new Dictionary() - { - {"##REFERENCE_CONFIGURATION_TOKEN##", inEditor ? "InEditor" : "Player" }, - { projectReferenceTemplate, string.Join("\r\n", projectReferences) }, - { pluginReferenceTemplate, string.Join("\r\n", pluginReferences) } - }); - } - else - { - Debug.LogError("Failed to find ProjectReference template in ProjectReferenceSet template"); - return template; - } - } - - private List GetPlatformConditions(IReadOnlyDictionary platforms, HashSet dependencyPlatforms) - { - List toReturn = new List(); - - foreach (KeyValuePair pair in platforms) - { - if (dependencyPlatforms.Contains(pair.Key)) - { - string platformName = pair.Value.Name; - toReturn.Add($"'$(UnityPlatform)' == '{platformName}'"); - } - } - - return toReturn; - } } } #endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters.meta new file mode 100644 index 0000000..c1b0dfe --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f64b80b10d6120a40972f17a04716012 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs new file mode 100644 index 0000000..a300f62 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +namespace Microsoft.Build.Unity.ProjectGeneration.Exporters +{ + /// + /// This interface exposes teh APIs for exporting projects. + /// + public interface IProjectExporter + { + void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo); + + void ExportSolution(UnityProjectInfo unityProjectInfo); + } +} \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs.meta new file mode 100644 index 0000000..e5965de --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 898019926c53c16408422d5fdf291010 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs new file mode 100644 index 0000000..e1b4e86 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs @@ -0,0 +1,347 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using UnityEditor; +using UnityEngine; + +namespace Microsoft.Build.Unity.ProjectGeneration.Exporters +{ + /// + /// This interface exposes teh APIs for exporting projects. + /// + public class TemplatedProjectExporter : IProjectExporter + { + private readonly DirectoryInfo propsOutputFolder; + + private readonly string solutionFileTemplateText; + private readonly string projectFileTemplateText; + private readonly string projectPropsFileTemplateText; + private readonly string projectTargetsFileTemplateText; + + public TemplatedProjectExporter(DirectoryInfo propsOuputFolder, FileInfo solutionFileTemplatePath, FileInfo projectFileTemplatePath, FileInfo projectPropsFileTemplatePath, FileInfo projectTargetsFileTemplatePath) + { + propsOutputFolder = propsOuputFolder; + + solutionFileTemplateText = File.ReadAllText(solutionFileTemplatePath.FullName); + projectFileTemplateText = File.ReadAllText(projectFileTemplatePath.FullName); + projectPropsFileTemplateText = File.ReadAllText(projectPropsFileTemplatePath.FullName); + projectTargetsFileTemplateText = File.ReadAllText(projectTargetsFileTemplatePath.FullName); + } + + public void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo) + { + if (File.Exists(projectInfo.ReferencePath.AbsolutePath)) + { + File.Delete(projectInfo.ReferencePath.AbsolutePath); + } + + if (Utilities.TryGetXMLTemplate(projectFileTemplateText, "PROJECT_REFERENCE_SET", out string projectReferenceSetTemplate) + && Utilities.TryGetXMLTemplate(projectFileTemplateText, "SOURCE_INCLUDE", out string sourceIncludeTemplate) + && Utilities.TryGetXMLTemplate(projectFileTemplateText, "SUPPORTED_PLATFORM_BUILD_CONDITION", out string suportedPlatformBuildConditionTemplate)) + { + List sourceIncludes = new List(); + Dictionary sourceGuidToClassName = new Dictionary(); + foreach (SourceFileInfo source in projectInfo.AssemblyDefinitionInfo.GetSources()) + { + ProcessSourceFile(projectInfo, source, sourceIncludeTemplate, sourceIncludes, sourceGuidToClassName); + } + + File.WriteAllLines(Path.Combine(propsOutputFolder.FullName, $"{projectInfo.Guid.ToString()}.csmap"), sourceGuidToClassName.Select(t => $"{t.Key.ToString("N")}:{t.Value}")); + + List supportedPlatformBuildConditions = new List(); + PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "InEditor", projectInfo.InEditorPlatforms); + PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "Player", projectInfo.PlayerPlatforms); + + HashSet inEditorSearchPaths = new HashSet(), playerSearchPaths = new HashSet(); + string projectReferences = string.Join("\r\n", CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplate, inEditorSearchPaths, true), CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplate, playerSearchPaths, false)); + Dictionary tokens = new Dictionary() + { + { "", projectInfo.Guid.ToString() }, + { "", projectInfo.AssemblyDefinitionInfo.allowUnsafeCode.ToString() }, + { "", MSBuildTools.CSharpVersion }, + + { "", "false" }, // Default to false + + { "", (projectInfo.ProjectType == ProjectType.EditorAsmDef || projectInfo.ProjectType == ProjectType.PredefinedEditorAssembly).ToString() }, + { "", Path.GetDirectoryName(EditorApplication.applicationPath) + "\\"}, + + { "", unityProjectInfo.AvailablePlatforms.First(t=>t.BuildTarget == BuildTarget.StandaloneWindows).Name }, + + { "", string.Join(";", unityProjectInfo.AvailablePlatforms.Select(t=>t.Name)) }, + + { "", string.Join(";", inEditorSearchPaths) }, + { "", string.Join(";", playerSearchPaths) }, + + { "##PLATFORM_PROPS_FOLDER_PATH_TOKEN##", propsOutputFolder.FullName }, + + { projectReferenceSetTemplate, projectReferences }, + { sourceIncludeTemplate, string.Join("\r\n", sourceIncludes) }, + { suportedPlatformBuildConditionTemplate, string.Join("\r\n", supportedPlatformBuildConditions) } + }; + + File.WriteAllText(projectInfo.ReferencePath.AbsolutePath, Utilities.ReplaceTokens(projectFileTemplateText, tokens, true)); + } + else + { + Debug.LogError("Failed to find ProjectReferenceSet and/or Source_Include templates in the project template file."); + } + } + + public void ExportSolution(UnityProjectInfo unityProjectInfo) + { + string solutionFilePath = Path.Combine(propsOutputFolder.FullName, $"{unityProjectInfo.UnityProjectName}.sln"); + + if (File.Exists(solutionFilePath)) + { + File.Delete(solutionFilePath); + } + string solutionTemplateText = solutionFileTemplateText; + + if (Utilities.TryGetTextTemplate(solutionFileTemplateText, "PROJECT", out string projectEntryTemplate, out string projectEntryTemplateBody) + && Utilities.TryGetTextTemplate(solutionFileTemplateText, "CONFIGURATION_PLATFORM", out string configurationPlatformEntry, out string configurationPlatformEntryBody) + && Utilities.TryGetTextTemplate(solutionFileTemplateText, "CONFIGURATION_PLATFORM_MAPPING", out string configurationPlatformMappingTemplate, out string configurationPlatformMappingTemplateBody) + && Utilities.TryGetTextTemplate(solutionFileTemplateText, "CONFIGURATION_PLATFORM_ENABLED", out string configurationPlatformEnabledTemplate, out string configurationPlatformEnabledTemplateBody)) + { + CSProjectInfo[] unorderedProjects = unityProjectInfo.CSProjects.Select(t => t.Value).ToArray(); + List orderedProjects = new List(); + + while (orderedProjects.Count < unorderedProjects.Length) + { + bool oneRemoved = false; + for (int i = 0; i < unorderedProjects.Length; i++) + { + if (unorderedProjects[i] == null) + { + continue; + } + + if (unorderedProjects[i].ProjectDependencies.Count == 0 || unorderedProjects[i].ProjectDependencies.All(t => orderedProjects.Contains(t.Dependency))) + { + orderedProjects.Add(unorderedProjects[i]); + + unorderedProjects[i] = null; + oneRemoved = true; + } + } + + if (!oneRemoved) + { + Debug.LogError($"Possible circular dependency."); + break; + } + } + + IEnumerable projectEntries = orderedProjects.Select(t => GetProjectEntry(t, projectEntryTemplateBody)); + + string[] twoConfigs = new string[] { + configurationPlatformEntryBody.Replace("", "InEditor"), + configurationPlatformEntryBody.Replace("", "Player") + }; + + IEnumerable configPlatforms = twoConfigs + .SelectMany(t => unityProjectInfo.AvailablePlatforms.Select(p => t.Replace("", p.Name.ToString()))); + + List configurationMappings = new List(); + List disabled = new List(); + + foreach (CSProjectInfo project in orderedProjects.Select(t => t)) + { + string ConfigurationTemplateReplace(string template, string guid, string configuration, string platform) + { + return Utilities.ReplaceTokens(template, new Dictionary() + { + { "", guid.ToString().ToUpper() }, + { "", configuration }, + { "", platform }, + { "", configuration }, + { "", platform }, + }); + } + + void ProcessMappings(Guid guid, string configuration, IReadOnlyDictionary platforms) + { + foreach (CompilationPlatformInfo platform in unityProjectInfo.AvailablePlatforms) + { + configurationMappings.Add(ConfigurationTemplateReplace(configurationPlatformMappingTemplateBody, guid.ToString(), configuration, platform.Name)); + + if (platforms.ContainsKey(platform.BuildTarget)) + { + configurationMappings.Add(ConfigurationTemplateReplace(configurationPlatformEnabledTemplateBody, guid.ToString(), configuration, platform.Name)); + } + } + } + + ProcessMappings(project.Guid, "InEditor", project.InEditorPlatforms); + ProcessMappings(project.Guid, "Player", project.PlayerPlatforms); + } + + solutionTemplateText = Utilities.ReplaceTokens(solutionFileTemplateText, new Dictionary() + { + { projectEntryTemplate, string.Join(Environment.NewLine, projectEntries)}, + { configurationPlatformEntry, string.Join(Environment.NewLine, configPlatforms)}, + { configurationPlatformMappingTemplate, string.Join(Environment.NewLine, configurationMappings) }, + { configurationPlatformEnabledTemplate, string.Join(Environment.NewLine, disabled) } + }); + } + else + { + Debug.LogError("Failed to find Project and/or Configuration_Platform templates in the solution template file."); + } + + foreach (CSProjectInfo project in unityProjectInfo.CSProjects.Values) + { + ExportProject(unityProjectInfo, project); + } + + File.WriteAllText(solutionFilePath, solutionTemplateText); + } + + private void ProcessSourceFile(CSProjectInfo projectInfo, SourceFileInfo sourceFile, string sourceIncludeTemplate, List sourceIncludes, Dictionary sourceGuidToClassName) + { + // Get the entry for the map + sourceGuidToClassName.Add(sourceFile.Guid, sourceFile.ClassType?.FullName); + + string linkPath = Utilities.GetRelativePath(projectInfo.AssemblyDefinitionInfo.Directory.FullName, sourceFile.File.FullName); + + string relativeSourcePath; + + switch (sourceFile.AssetLocation) + { + case AssetLocation.BuiltInPackage: + relativeSourcePath = sourceFile.File.FullName; + return; + case AssetLocation.Project: + relativeSourcePath = $"..\\..\\{Utilities.GetAssetsRelativePathFrom(sourceFile.File.FullName)}"; + break; + case AssetLocation.Package: + relativeSourcePath = $"..\\..\\{Utilities.GetPackagesRelativePathFrom(sourceFile.File.FullName)}"; + break; + case AssetLocation.PackageCopy: + relativeSourcePath = $"..\\{Utilities.GetPackagesRelativePathFrom(sourceFile.File.FullName)}"; + break; + case AssetLocation.External: + relativeSourcePath = sourceFile.File.FullName; + Debug.LogWarning($"Referencing external source file with full path '{sourceFile.File.FullName}'"); + break; + default: throw new InvalidDataException("Unknown asset location."); + } + + sourceIncludes.Add(Utilities.ReplaceTokens(sourceIncludeTemplate, new Dictionary() + { + {"##RELATIVE_SOURCE_PATH##", relativeSourcePath }, + {"##PROJECT_LINK_PATH##", linkPath } + })); + } + + private void PopulateSupportedPlatformBuildConditions(List supportedPlatformBuildConditions, string template, string configuration, IReadOnlyDictionary platforms) + { + foreach (KeyValuePair platform in platforms) + { + supportedPlatformBuildConditions.Add(Utilities.ReplaceTokens(template, new Dictionary() + { + { "##SUPPORTED_CONFIGURATION_TOKEN##", configuration }, + { "##SUPPORTED_PLATFORM_TOKEN##", platform.Value.Name } + })); + } + } + + private string CreateProjectReferencesSet(CSProjectInfo projectInfo, string template, HashSet additionalSearchPaths, bool inEditor) + { + if (Utilities.TryGetXMLTemplate(template, "PROJECT_REFERENCE", out string projectReferenceTemplate) + && Utilities.TryGetXMLTemplate(template, "PLUGIN_REFERENCE", out string pluginReferenceTemplate)) + { + List projectReferences = new List(); + foreach (CSProjectDependency dependency in projectInfo.ProjectDependencies) + { + List platformConditions = GetPlatformConditions(inEditor ? projectInfo.InEditorPlatforms : projectInfo.PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); + + projectReferences.Add(Utilities.ReplaceTokens(projectReferenceTemplate, new Dictionary() + { + { "##REFERENCE_TOKEN##", $"{dependency.Dependency.Name}.csproj" }, + { "", dependency.Dependency.ReferencePath.AbsolutePath }, + { "##CONDITION_TOKEN##", platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)} + })); + } + + List pluginReferences = new List(); + foreach (CSProjectDependency dependency in projectInfo.PluginDependencies) + { + if (dependency.Dependency.Type == PluginType.Native) + { + continue; + } + List platformConditions = GetPlatformConditions(inEditor ? projectInfo.InEditorPlatforms : projectInfo.PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); + + pluginReferences.Add(Utilities.ReplaceTokens(pluginReferenceTemplate, new Dictionary() + { + { "##REFERENCE_TOKEN##", dependency.Dependency.Name }, + { "##CONDITION_TOKEN##", platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)}, + { "", dependency.Dependency.ReferencePath.AbsolutePath } + })); + + additionalSearchPaths.Add(Path.GetDirectoryName(dependency.Dependency.ReferencePath.AbsolutePath)); + } + + return Utilities.ReplaceTokens(template, new Dictionary() + { + {"##REFERENCE_CONFIGURATION_TOKEN##", inEditor ? "InEditor" : "Player" }, + { projectReferenceTemplate, string.Join("\r\n", projectReferences) }, + { pluginReferenceTemplate, string.Join("\r\n", pluginReferences) } + }); + } + else + { + Debug.LogError("Failed to find ProjectReference template in ProjectReferenceSet template"); + return template; + } + } + + private List GetPlatformConditions(IReadOnlyDictionary platforms, HashSet dependencyPlatforms) + { + List toReturn = new List(); + + foreach (KeyValuePair pair in platforms) + { + if (dependencyPlatforms.Contains(pair.Key)) + { + string platformName = pair.Value.Name; + toReturn.Add($"'$(UnityPlatform)' == '{platformName}'"); + } + } + + return toReturn; + } + + private string GetProjectEntry(CSProjectInfo projectInfo, string projectEntryTemplateBody) + { + StringBuilder toReturn = new StringBuilder(); + + toReturn.AppendLine(Utilities.ReplaceTokens(projectEntryTemplateBody, new Dictionary() { + { "", projectInfo.Name }, + { "", Path.GetFileName(projectInfo.ReferencePath.AbsolutePath) }, + { "", projectInfo.Guid.ToString().ToUpper() } })); + + if (projectInfo.ProjectDependencies.Count > 0) + { + string projectDependencyStartSection = " ProjectSection(ProjectDependencies) = postProject"; + string projectDependencyGuid = " {} = {}"; + string projectDependencyStopSection = " EndProjectSection"; + toReturn.AppendLine(projectDependencyStartSection); + + foreach (CSProjectDependency project in projectInfo.ProjectDependencies) + { + toReturn.AppendLine(projectDependencyGuid.Replace("", project.Dependency.Guid.ToString().ToUpper())); + } + + toReturn.AppendLine(projectDependencyStopSection); + } + toReturn.Append("EndProject"); + return toReturn.ToString(); + } + } +} \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs.meta new file mode 100644 index 0000000..eaff462 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0214c26cfa2c3bd4f930dfb7369be601 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs index 021d5e7..0ca3bb9 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. #if UNITY_EDITOR +using Microsoft.Build.Unity.ProjectGeneration.Exporters; using System; using System.Collections.Generic; using System.IO; @@ -83,13 +84,8 @@ private static void RunGenerateSDKProjects() CreateCommonPropsFile(platforms, editorPlatform, generatedProjectPath); UnityProjectInfo unityProjectInfo = new UnityProjectInfo(platforms, generatedProjectPath); - // Read the solution template - string solutionTemplateText = File.ReadAllText(TemplateFiles.Instance.MSBuildSolutionTemplatePath); - - // Read the project template - string projectTemplateText = File.ReadAllText(TemplateFiles.Instance.SDKProjectFileTemplatePath); - - unityProjectInfo.ExportSolution(solutionTemplateText, projectTemplateText, generatedProjectPath); + IProjectExporter exporter = new TemplatedProjectExporter(new DirectoryInfo(generatedProjectPath), TemplateFiles.Instance.MSBuildSolutionTemplatePath, TemplateFiles.Instance.SDKProjectFileTemplatePath); + exporter.ExportSolution(unityProjectInfo); foreach (string otherFile in TemplateFiles.Instance.OtherFiles) { diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs index c1eaf71..e19be9d 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs @@ -21,6 +21,8 @@ public class TemplateFiles private const string TemplateFilesFolderName = "MSBuildTemplates"; private const string MSBuildSolutionTemplateName = "SolutionTemplate.sln.template"; private const string SDKProjectFileTemplateName = "SDKProjectTemplate.csproj.template"; + private const string SDKProjectPropsFileTemplateName = "SDKProjectTemplate.g.props.template"; + private const string SDKProjectTargetsFileTemplateName = "SDKProjectTemplate.g.targets.template"; private const string PlatformPropsTemplateName = "Platform.Configuration.Any.props.template"; private const string EditorPropsTemplateName = "Editor.InEditor.Any.props.template"; private const string SpecifcPlatformPropsTemplateRegex = @"[a-zA-Z]+\.[a-zA-Z]+\.[a-zA-Z0-9]*\.props.template"; @@ -37,12 +39,22 @@ public class TemplateFiles /// /// Gets the MSBuild Solution file (.sln) template path. /// - public string MSBuildSolutionTemplatePath { get; } + public FileInfo MSBuildSolutionTemplatePath { get; } /// /// Gets the MSBuild C# SDK Project file (.csproj) template path. /// - public string SDKProjectFileTemplatePath { get; } + public FileInfo SDKProjectFileTemplatePath { get; } + + /// + /// Gets the MSBuild C# SDK Project file (.csproj) template path. + /// + public FileInfo SDKProjectPropsFileTemplatePath { get; } + + /// + /// Gets the MSBuild C# SDK Project file (.csproj) template path. + /// + public FileInfo SDKProjectTargetsFileTemplatePath { get; } /// /// Gets the MSBuild Platform Props file (.props) template path. @@ -88,8 +100,10 @@ private TemplateFiles() Dictionary fileNamesMaps = files.ToDictionary(t => Path.GetFileName(t)); - MSBuildSolutionTemplatePath = GetExpectedTemplatesPath(fileNamesMaps, "MSBuild Solution", MSBuildSolutionTemplateName); - SDKProjectFileTemplatePath = GetExpectedTemplatesPath(fileNamesMaps, "SDK Project", SDKProjectFileTemplateName); + MSBuildSolutionTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "MSBuild Solution", MSBuildSolutionTemplateName)); + SDKProjectFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project", SDKProjectFileTemplateName)); + SDKProjectPropsFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project Props", SDKProjectPropsFileTemplateName)); + SDKProjectTargetsFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project Targets", SDKProjectTargetsFileTemplateName)); PlatformPropsTemplatePath = GetExpectedTemplatesPath(fileNamesMaps, "Platform Props", PlatformPropsTemplateName); BuildProjectsTemplatePath = GetExpectedTemplatesPath(fileNamesMaps, "MSBuild Build Projects Proj", BuildProjectsTemplateName); diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs index cb00440..f189891 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs @@ -244,147 +244,6 @@ private List ScanForPluginDLLs() return toReturn; } - - private string GetProjectEntry(CSProjectInfo projectInfo, string projectEntryTemplateBody) - { - StringBuilder toReturn = new StringBuilder(); - - toReturn.AppendLine(Utilities.ReplaceTokens(projectEntryTemplateBody, new Dictionary() { - { "", projectInfo.Name }, - { "", Path.GetFileName(projectInfo.ReferencePath.AbsolutePath) }, - { "", projectInfo.Guid.ToString().ToUpper() } })); - - if (projectInfo.ProjectDependencies.Count > 0) - { - string projectDependencyStartSection = " ProjectSection(ProjectDependencies) = postProject"; - string projectDependencyGuid = " {} = {}"; - string projectDependencyStopSection = " EndProjectSection"; - toReturn.AppendLine(projectDependencyStartSection); - - foreach (CSProjectDependency project in projectInfo.ProjectDependencies) - { - toReturn.AppendLine(projectDependencyGuid.Replace("", project.Dependency.Guid.ToString().ToUpper())); - } - - toReturn.AppendLine(projectDependencyStopSection); - } - toReturn.Append("EndProject"); - return toReturn.ToString(); - } - - /// - /// Exports the project info into a solution file, and the CSProject files. - /// - /// The solution file template text. - /// The project file template text. - /// The output folder of the platform props. - public void ExportSolution(string solutionTemplateText, string projectFileTemplateText, string generatedProjectPath) - { - string solutionFilePath = Path.Combine(generatedProjectPath, $"{UnityProjectName}.sln"); - - if (File.Exists(solutionFilePath)) - { - File.Delete(solutionFilePath); - } - - if (Utilities.TryGetTextTemplate(solutionTemplateText, "PROJECT", out string projectEntryTemplate, out string projectEntryTemplateBody) - && Utilities.TryGetTextTemplate(solutionTemplateText, "CONFIGURATION_PLATFORM", out string configurationPlatformEntry, out string configurationPlatformEntryBody) - && Utilities.TryGetTextTemplate(solutionTemplateText, "CONFIGURATION_PLATFORM_MAPPING", out string configurationPlatformMappingTemplate, out string configurationPlatformMappingTemplateBody) - && Utilities.TryGetTextTemplate(solutionTemplateText, "CONFIGURATION_PLATFORM_ENABLED", out string configurationPlatformEnabledTemplate, out string configurationPlatformEnabledTemplateBody)) - { - CSProjectInfo[] unorderedProjects = CSProjects.Select(t => t.Value).ToArray(); - List orderedProjects = new List(); - - while (orderedProjects.Count < unorderedProjects.Length) - { - bool oneRemoved = false; - for (int i = 0; i < unorderedProjects.Length; i++) - { - if (unorderedProjects[i] == null) - { - continue; - } - - if (unorderedProjects[i].ProjectDependencies.Count == 0 || unorderedProjects[i].ProjectDependencies.All(t => orderedProjects.Contains(t.Dependency))) - { - orderedProjects.Add(unorderedProjects[i]); - - unorderedProjects[i] = null; - oneRemoved = true; - } - } - - if (!oneRemoved) - { - Debug.LogError($"Possible circular dependency."); - break; - } - } - - IEnumerable projectEntries = orderedProjects.Select(t => GetProjectEntry(t, projectEntryTemplateBody)); - - string[] twoConfigs = new string[] { - configurationPlatformEntryBody.Replace("", "InEditor"), - configurationPlatformEntryBody.Replace("", "Player") - }; - - IEnumerable configPlatforms = twoConfigs - .SelectMany(t => AvailablePlatforms.Select(p => t.Replace("", p.Name.ToString()))); - - List configurationMappings = new List(); - List disabled = new List(); - - foreach (CSProjectInfo project in orderedProjects.Select(t => t)) - { - string ConfigurationTemplateReplace(string template, string guid, string configuration, string platform) - { - return Utilities.ReplaceTokens(template, new Dictionary() - { - { "", guid.ToString().ToUpper() }, - { "", configuration }, - { "", platform }, - { "", configuration }, - { "", platform }, - }); - } - - void ProcessMappings(Guid guid, string configuration, IReadOnlyDictionary platforms) - { - foreach (CompilationPlatformInfo platform in AvailablePlatforms) - { - configurationMappings.Add(ConfigurationTemplateReplace(configurationPlatformMappingTemplateBody, guid.ToString(), configuration, platform.Name)); - - if (platforms.ContainsKey(platform.BuildTarget)) - { - configurationMappings.Add(ConfigurationTemplateReplace(configurationPlatformEnabledTemplateBody, guid.ToString(), configuration, platform.Name)); - } - } - } - - ProcessMappings(project.Guid, "InEditor", project.InEditorPlatforms); - ProcessMappings(project.Guid, "Player", project.PlayerPlatforms); - } - - solutionTemplateText = Utilities.ReplaceTokens(solutionTemplateText, new Dictionary() - { - { projectEntryTemplate, string.Join(Environment.NewLine, projectEntries)}, - { configurationPlatformEntry, string.Join(Environment.NewLine, configPlatforms)}, - { configurationPlatformMappingTemplate, string.Join(Environment.NewLine, configurationMappings) }, - { configurationPlatformEnabledTemplate, string.Join(Environment.NewLine, disabled) } - }); - } - else - { - Debug.LogError("Failed to find Project and/or Configuration_Platform templates in the solution template file."); - } - - foreach (CSProjectInfo project in CSProjects.Values) - { - project.ExportProject(projectFileTemplateText, generatedProjectPath); - } - - File.WriteAllText(solutionFilePath, solutionTemplateText); - } } } #endif \ No newline at end of file From 0dec54de4f5a3c9d177c27e5a2468b63cf2c8b3b Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 24 Oct 2019 16:32:06 -0700 Subject: [PATCH 03/19] More changes, plus some sample updates --- .../Component1Type.cs} | 2 +- .../Assets/Component1/Component1Type.cs.meta | 11 ++ .../Assets/Component2/Component2.asmdef | 3 + .../Assets/Component2/Component2.asmdef.meta | 7 + .../Assets/Component2/Component2Type.cs | 18 ++ ...ponent2.cs.meta => Component2Type.cs.meta} | 0 .../Project.Unity/Assets/NonComponentType.cs | 18 ++ .../Assets/NonComponentType.cs.meta | 11 ++ .../SDKProjectTemplate.csproj.template | 173 ++---------------- .../Scripts/Exporters/IProjectExporter.cs | 5 +- .../Exporters/TemplatedProjectExporter.cs | 115 ++++++++---- .../ProjectGenerator/Scripts/MSBuildTools.cs | 7 +- .../Scripts/UnityProjectInfo.cs | 1 - 13 files changed, 176 insertions(+), 195 deletions(-) rename Samples/ExternalDependencies/Project.Unity/Assets/{Component2/Component2.cs => Component1/Component1Type.cs} (85%) create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs rename Samples/ExternalDependencies/Project.Unity/Assets/Component2/{Component2.cs.meta => Component2Type.cs.meta} (100%) create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs.meta diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs similarity index 85% rename from Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs rename to Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs index 3e37dc2..ea88a65 100644 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using UnityEngine; -public class Component2 : MonoBehaviour +public class Component1Type : MonoBehaviour { // Start is called before the first frame update void Start() diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs.meta new file mode 100644 index 0000000..3259c94 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95e0dd9925095ec40b1c74297b8ac3e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef new file mode 100644 index 0000000..8f34596 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef @@ -0,0 +1,3 @@ +{ + "name": "Component2" +} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef.meta new file mode 100644 index 0000000..e05c7ab --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 707c9f565b91bc4489f9788956eb033c +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs new file mode 100644 index 0000000..c98f6cd --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Component2Type : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs.meta similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.cs.meta rename to Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs.meta diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs b/Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs new file mode 100644 index 0000000..5773a15 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class NonComponentType : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs.meta b/Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs.meta new file mode 100644 index 0000000..de2eeac --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a89abd2f1d90a4941b98865d066eacb6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.csproj.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.csproj.template index 61c185b..47340d2 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.csproj.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.csproj.template @@ -2,161 +2,28 @@ - - - - - - - - - - - ..\Output\ - $(MSBuildThisFileDirectory)$(RelativeBuildFolder) - false - - false - + - - $(MSBuildThisFileDirectory)..\Publish\ - - - - - - - - InEditor - - - - $(Platform) - - - - $(Configuration) - - - - InEditor;Player - - - - - - Release - AnyCPU - - - - Debug - - - - $(BuildFolder)obj\$(ProjectGuid)\ - $(BuildFolder)bin\ - $(BaseIntermediateOutputPath)$(UnityConfiguration)\$(UnityPlatform)\ - - - - - $(BuildFolder)$(UnityConfiguration)\$(UnityPlatform)\ - $(OutputPath) - - - $(BuildFolder)$(UnityConfiguration)\$(UnityPlatform)\$(MSBuildProjectName)\ - $(OutputPath) - - - - - - - - {CandidateAssemblyFiles};{HintPathFromItem};{RawFileName}; - - - - - - - - - $(AssemblySearchPaths); - true - - - - $(AssemblySearchPaths); - - - - $(DefaultItemExcludes)obj;bin;*.asmdef;*.asmdef.meta;*.csmap; - - false - - - - - - - All - - + - - false - - - - - - - - - - - - - Always - - - - - - - - - $(BuildDependsOn) - - - - - - - - - - - - - - - - - - - - - - - + You can modify this file as follows: + - Add NuGet package references: + + + + - Add external C# project references: + + + + --> + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs index a300f62..288cc3f 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. - +#if UNITY_EDITOR namespace Microsoft.Build.Unity.ProjectGeneration.Exporters { /// @@ -12,4 +12,5 @@ public interface IProjectExporter void ExportSolution(UnityProjectInfo unityProjectInfo); } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs index e1b4e86..5f3ab31 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +#if UNITY_EDITOR using System; using System.Collections.Generic; using System.IO; @@ -40,56 +41,95 @@ public void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo proje File.Delete(projectInfo.ReferencePath.AbsolutePath); } - if (Utilities.TryGetXMLTemplate(projectFileTemplateText, "PROJECT_REFERENCE_SET", out string projectReferenceSetTemplate) - && Utilities.TryGetXMLTemplate(projectFileTemplateText, "SOURCE_INCLUDE", out string sourceIncludeTemplate) - && Utilities.TryGetXMLTemplate(projectFileTemplateText, "SUPPORTED_PLATFORM_BUILD_CONDITION", out string suportedPlatformBuildConditionTemplate)) + if (!TryExportPropsFile(unityProjectInfo, projectInfo)) { - List sourceIncludes = new List(); - Dictionary sourceGuidToClassName = new Dictionary(); - foreach (SourceFileInfo source in projectInfo.AssemblyDefinitionInfo.GetSources()) - { - ProcessSourceFile(projectInfo, source, sourceIncludeTemplate, sourceIncludes, sourceGuidToClassName); - } + Debug.LogError($"Error exporting the generated props file for {projectInfo.Name}"); + return; + } - File.WriteAllLines(Path.Combine(propsOutputFolder.FullName, $"{projectInfo.Guid.ToString()}.csmap"), sourceGuidToClassName.Select(t => $"{t.Key.ToString("N")}:{t.Value}")); + if (!TryExportTargetsFile(unityProjectInfo, projectInfo)) + { + Debug.LogError($"Error exporting the generated targets file for {projectInfo.Name}"); + return; + } - List supportedPlatformBuildConditions = new List(); - PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "InEditor", projectInfo.InEditorPlatforms); - PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "Player", projectInfo.PlayerPlatforms); + if (File.Exists(projectInfo.ReferencePath.AbsolutePath)) + { + Debug.Log($"Skipping replacing the existing C# project file {projectInfo.Name}"); + } + else + { + File.WriteAllText(projectInfo.ReferencePath.AbsolutePath, projectFileTemplateText); + } + } - HashSet inEditorSearchPaths = new HashSet(), playerSearchPaths = new HashSet(); - string projectReferences = string.Join("\r\n", CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplate, inEditorSearchPaths, true), CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplate, playerSearchPaths, false)); - Dictionary tokens = new Dictionary() - { - { "", projectInfo.Guid.ToString() }, - { "", projectInfo.AssemblyDefinitionInfo.allowUnsafeCode.ToString() }, - { "", MSBuildTools.CSharpVersion }, + private bool TryExportPropsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo) + { + if (!Utilities.TryGetXMLTemplate(projectPropsFileTemplateText, "PROJECT_REFERENCE_SET", out string projectReferenceSetTemplate) + || !Utilities.TryGetXMLTemplate(projectPropsFileTemplateText, "SOURCE_INCLUDE", out string sourceIncludeTemplate)) + { + return false; + } + + List sourceIncludes = new List(); + Dictionary sourceGuidToClassName = new Dictionary(); + foreach (SourceFileInfo source in projectInfo.AssemblyDefinitionInfo.GetSources()) + { + ProcessSourceFile(projectInfo, source, sourceIncludeTemplate, sourceIncludes, sourceGuidToClassName); + } - { "", "false" }, // Default to false + File.WriteAllLines(Path.Combine(propsOutputFolder.FullName, $"{projectInfo.Guid.ToString()}.csmap"), sourceGuidToClassName.Select(t => $"{t.Key.ToString("N")}:{t.Value}")); - { "", (projectInfo.ProjectType == ProjectType.EditorAsmDef || projectInfo.ProjectType == ProjectType.PredefinedEditorAssembly).ToString() }, - { "", Path.GetDirectoryName(EditorApplication.applicationPath) + "\\"}, + HashSet inEditorSearchPaths = new HashSet(), playerSearchPaths = new HashSet(); + string projectReferences = string.Join("\r\n", CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplate, inEditorSearchPaths, true), CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplate, playerSearchPaths, false)); + Dictionary tokens = new Dictionary() + { + { "", projectInfo.Guid.ToString() }, + { "", projectInfo.AssemblyDefinitionInfo.allowUnsafeCode.ToString() }, + { "", MSBuildTools.CSharpVersion }, - { "", unityProjectInfo.AvailablePlatforms.First(t=>t.BuildTarget == BuildTarget.StandaloneWindows).Name }, + { "", "false" }, // Default to false - { "", string.Join(";", unityProjectInfo.AvailablePlatforms.Select(t=>t.Name)) }, + { "", (projectInfo.ProjectType == ProjectType.EditorAsmDef || projectInfo.ProjectType == ProjectType.PredefinedEditorAssembly).ToString() }, + { "", Path.GetDirectoryName(EditorApplication.applicationPath) + "\\"}, - { "", string.Join(";", inEditorSearchPaths) }, - { "", string.Join(";", playerSearchPaths) }, + { "", unityProjectInfo.AvailablePlatforms.First(t=>t.BuildTarget == BuildTarget.StandaloneWindows).Name }, - { "##PLATFORM_PROPS_FOLDER_PATH_TOKEN##", propsOutputFolder.FullName }, + { "", string.Join(";", unityProjectInfo.AvailablePlatforms.Select(t=>t.Name)) }, - { projectReferenceSetTemplate, projectReferences }, - { sourceIncludeTemplate, string.Join("\r\n", sourceIncludes) }, - { suportedPlatformBuildConditionTemplate, string.Join("\r\n", supportedPlatformBuildConditions) } - }; + { "", string.Join(";", inEditorSearchPaths) }, + { "", string.Join(";", playerSearchPaths) }, - File.WriteAllText(projectInfo.ReferencePath.AbsolutePath, Utilities.ReplaceTokens(projectFileTemplateText, tokens, true)); - } - else + { "##PLATFORM_PROPS_FOLDER_PATH_TOKEN##", propsOutputFolder.FullName }, + + { projectReferenceSetTemplate, projectReferences }, + { sourceIncludeTemplate, string.Join("\r\n", sourceIncludes) } + }; + + File.WriteAllText(projectInfo.ReferencePath.AbsolutePath.Replace("csproj", "g.props"), Utilities.ReplaceTokens(projectPropsFileTemplateText, tokens, true)); + + return true; + } + + private bool TryExportTargetsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo) + { + if (!Utilities.TryGetXMLTemplate(projectTargetsFileTemplateText, "SUPPORTED_PLATFORM_BUILD_CONDITION", out string suportedPlatformBuildConditionTemplate)) { - Debug.LogError("Failed to find ProjectReferenceSet and/or Source_Include templates in the project template file."); + return false; } + + List supportedPlatformBuildConditions = new List(); + PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "InEditor", projectInfo.InEditorPlatforms); + PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "Player", projectInfo.PlayerPlatforms); + + Dictionary tokens = new Dictionary() + { + { suportedPlatformBuildConditionTemplate, string.Join("\r\n", supportedPlatformBuildConditions) } + }; + + File.WriteAllText(projectInfo.ReferencePath.AbsolutePath.Replace("csproj", "g.targets"), Utilities.ReplaceTokens(projectTargetsFileTemplateText, tokens, true)); + + return true; } public void ExportSolution(UnityProjectInfo unityProjectInfo) @@ -344,4 +384,5 @@ private string GetProjectEntry(CSProjectInfo projectInfo, string projectEntryTem return toReturn.ToString(); } } -} \ No newline at end of file +} +#endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs index 0ca3bb9..a2cb239 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs @@ -84,7 +84,12 @@ private static void RunGenerateSDKProjects() CreateCommonPropsFile(platforms, editorPlatform, generatedProjectPath); UnityProjectInfo unityProjectInfo = new UnityProjectInfo(platforms, generatedProjectPath); - IProjectExporter exporter = new TemplatedProjectExporter(new DirectoryInfo(generatedProjectPath), TemplateFiles.Instance.MSBuildSolutionTemplatePath, TemplateFiles.Instance.SDKProjectFileTemplatePath); + IProjectExporter exporter = new TemplatedProjectExporter( + new DirectoryInfo(generatedProjectPath), + TemplateFiles.Instance.MSBuildSolutionTemplatePath, + TemplateFiles.Instance.SDKProjectFileTemplatePath, + TemplateFiles.Instance.SDKProjectPropsFileTemplatePath, + TemplateFiles.Instance.SDKProjectTargetsFileTemplatePath); exporter.ExportSolution(unityProjectInfo); foreach (string otherFile in TemplateFiles.Instance.OtherFiles) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs index f189891..5d3635b 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs @@ -7,7 +7,6 @@ using System.Collections.ObjectModel; using System.IO; using System.Linq; -using System.Text; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; From 1fa50f16fce586f18595bd833d94704790a5c1f2 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Mon, 4 Nov 2019 14:57:50 -0800 Subject: [PATCH 04/19] Perf Improvements in preparation of External Depedencies (#42) * Misc cleanup, also refactor a bit more csprojectinfo and exporter relationship * Rewrote the template process for XML, haven't replaced existing process yet. * Various perf improvements, also removed need to create PackageCopy * Implemented TextFileTemplate * A few more minor changes * A bit of cleanup * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs Co-Authored-By: Kurtis * Removing commented code --- Samples/ExternalDependencies/NuGet.config | 11 + .../Assets/Component2/Component2.asmdef | 17 +- .../Assets/Component2/Component2Type.cs | 9 +- .../Assets/Scenes/SampleScene.unity | 65 ++- .../ProjectSettings/ProjectSettings.asset | 3 +- .../Editor.InEditor.Any.props.template | 5 +- .../Platform.Configuration.Any.props.template | 5 +- .../SDKProjectTemplate.g.props.template | 8 +- .../SolutionTemplate.sln.template | 10 +- .../WSA.Player.IL2CPP.props.template | 2 +- .../WSA.Player.Net.props.template | 2 +- .../Scripts/AssemblyDefinitionInfo.cs | 8 +- .../Scripts/AssetScriptReferenceRetargeter.cs | 1 + .../ProjectGenerator/Scripts/CSProjectInfo.cs | 5 +- .../Scripts/Exporters/IProjectExporter.cs | 23 +- .../Exporters/TemplatedProjectExporter.cs | 391 ++++++++---------- .../ProjectGenerator/Scripts/MSBuildTools.cs | 187 +++++---- .../Scripts/PluginAssemblyInfo.cs | 8 +- .../Scripts/ReferenceItemInfo.cs | 8 +- .../Scripts/SourceFileInfo.cs | 70 +++- .../ProjectGenerator/Scripts/Templates.meta | 8 + .../Scripts/Templates/DelimitedStringSet.cs | 34 ++ .../Templates/DelimitedStringSet.cs.meta | 11 + .../Scripts/Templates/FileTemplate.cs | 74 ++++ .../Scripts/Templates/FileTemplate.cs.meta | 11 + .../Scripts/Templates/ITemplatePart.cs | 57 +++ .../Scripts/Templates/ITemplatePart.cs.meta | 11 + .../Scripts/Templates/ITemplateToken.cs | 46 +++ .../Scripts/Templates/ITemplateToken.cs.meta | 11 + .../Scripts/{ => Templates}/TemplateFiles.cs | 18 +- .../{ => Templates}/TemplateFiles.cs.meta | 0 .../Templates/TemplateReplacementSet.cs | 49 +++ .../Templates/TemplateReplacementSet.cs.meta | 11 + .../Scripts/Templates/Text.meta | 8 + .../Templates/Text/TextFileTemplate.cs | 151 +++++++ .../Templates/Text/TextFileTemplate.cs.meta | 11 + .../Templates/Text/TextTemplatePart.cs | 72 ++++ .../Templates/Text/TextTemplatePart.cs.meta | 11 + .../Templates/Text/TextTemplateToken.cs | 34 ++ .../Templates/Text/TextTemplateToken.cs.meta | 11 + .../Scripts/Templates/Xml.meta | 8 + .../Xml/XmlAttributeTemplateToken.cs | 65 +++ .../Xml/XmlAttributeTemplateToken.cs.meta | 11 + .../Templates/Xml/XmlCommentTemplateToken.cs | 70 ++++ .../Xml/XmlCommentTemplateToken.cs.meta | 11 + .../Scripts/Templates/Xml/XmlFileTemplate.cs | 42 ++ .../Templates/Xml/XmlFileTemplate.cs.meta | 11 + .../Scripts/Templates/Xml/XmlTemplatePart.cs | 279 +++++++++++++ .../Templates/Xml/XmlTemplatePart.cs.meta | 11 + .../Templates/Xml/XmlTemplateWriter.cs | 26 ++ .../Templates/Xml/XmlTemplateWriter.cs.meta | 11 + .../Scripts/UnityProjectInfo.cs | 23 +- .../ProjectGenerator/Scripts/Utilities.cs | 52 +-- 53 files changed, 1671 insertions(+), 426 deletions(-) create mode 100644 Samples/ExternalDependencies/NuGet.config create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/DelimitedStringSet.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/DelimitedStringSet.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/FileTemplate.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/FileTemplate.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplateToken.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplateToken.cs.meta rename Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/{ => Templates}/TemplateFiles.cs (90%) rename Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/{ => Templates}/TemplateFiles.cs.meta (100%) create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplateToken.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplateToken.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlAttributeTemplateToken.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlAttributeTemplateToken.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplatePart.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplatePart.cs.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs.meta diff --git a/Samples/ExternalDependencies/NuGet.config b/Samples/ExternalDependencies/NuGet.config new file mode 100644 index 0000000..4b68247 --- /dev/null +++ b/Samples/ExternalDependencies/NuGet.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef index 8f34596..776268e 100644 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef @@ -1,3 +1,14 @@ -{ - "name": "Component2" -} +{ + "name": "Component2", + "references": [ + "Microsoft.MSBuildForUnity.ProjectGenerator" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs index c98f6cd..31770ca 100644 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs @@ -1,4 +1,7 @@ -using System.Collections; +#if UNITY_EDITOR +using Microsoft.Build.Unity.ProjectGeneration; +#endif +using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -7,7 +10,9 @@ public class Component2Type : MonoBehaviour // Start is called before the first frame update void Start() { - +#if UNITY_EDITOR + MSBuildTools.GenerateSDKProjects(); +#endif } // Update is called once per frame diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity b/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity index 114459f..0bc3925 100644 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity @@ -50,7 +50,6 @@ LightmapSettings: m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 - m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 @@ -117,7 +116,8 @@ NavMeshSettings: GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 170076735} @@ -133,7 +133,8 @@ GameObject: Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 170076733} m_Enabled: 1 serializedVersion: 8 @@ -170,7 +171,8 @@ Light: Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 170076733} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} @@ -183,7 +185,8 @@ Transform: GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 534669905} @@ -200,14 +203,16 @@ GameObject: AudioListener: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 534669902} m_Enabled: 1 --- !u!20 &534669904 Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 534669902} m_Enabled: 1 serializedVersion: 2 @@ -248,7 +253,8 @@ Camera: Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 534669902} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} @@ -257,3 +263,46 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1693821667 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1693821669} + - component: {fileID: 1693821668} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &1693821668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1693821667} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0239bf7fc5d0364aa8ca09615b4765e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1693821669 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1693821667} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset index 7be200d..e05cc9d 100644 --- a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset @@ -536,7 +536,8 @@ PlayerSettings: allowUnsafeCode: 0 additionalIl2CppArgs: scriptingRuntimeVersion: 1 - apiCompatibilityLevelPerPlatform: {} + apiCompatibilityLevelPerPlatform: + '': 6 m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: Template_3D diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Editor.InEditor.Any.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Editor.InEditor.Any.props.template index 48c2cb6..131c771 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Editor.InEditor.Any.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Editor.InEditor.Any.props.template @@ -1,7 +1,10 @@ $(AssemblySearchPaths); - $(DefineConstants); + $(DefineConstants); + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Platform.Configuration.Any.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Platform.Configuration.Any.props.template index 2058be5..6e7dbd6 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Platform.Configuration.Any.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Platform.Configuration.Any.props.template @@ -1,7 +1,10 @@ - $(DefineConstants); + $(DefineConstants); + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template index 48556a9..f4842b7 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template @@ -7,7 +7,7 @@ - + @@ -119,11 +119,7 @@ - + - - - Always - diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SolutionTemplate.sln.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SolutionTemplate.sln.template index e545b2d..beea14e 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SolutionTemplate.sln.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SolutionTemplate.sln.template @@ -2,10 +2,16 @@ # Visual Studio 15 VisualStudioVersion = 15.0.28307.539 MinimumVisualStudioVersion = 10.0.40219.1 -#PROJECT_TEMPLATE Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "", "", "{}" +#PROJECT_TEMPLATE_START +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "", "", "{}" + ProjectSection(ProjectDependencies) = postProject +#PROJECT_DEPENDENCY_TEMPLATE {} = {} + EndProjectSection +EndProject +#PROJECT_TEMPLATE_END Global GlobalSection(SolutionConfigurationPlatforms) = preSolution -#CONFIGURATION_PLATFORM_TEMPLATE | = | +#CONFIGURATION_PLATFORM_TEMPLATE | = | EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution #CONFIGURATION_PLATFORM_MAPPING_TEMPLATE {}.|.ActiveCfg = | diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template index 9875686..d80b27b 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template @@ -3,7 +3,7 @@ $(AssemblySearchPaths);;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5;$(UnityEditorInstallFolder)Data\PlaybackEngines\MetroSupport\Managed\UAP\ en-US - $(DefineConstants);;NETFX_CORE;WINDOWS_UWP + $(DefineConstants);;NETFX_CORE;WINDOWS_UWP diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template index 78ef7b2..7e56a19 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template @@ -3,7 +3,7 @@ $(AssemblySearchPaths);;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5;$(UnityEditorInstallFolder)Data\PlaybackEngines\MetroSupport\Managed\UAP\ uap10.0 en-US - $(DefineConstants);;NETFX_CORE;WINDOWS_UWP + $(DefineConstants);;NETFX_CORE;WINDOWS_UWP UAP,Version=v10.0 UAP diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs index f6288f4..d4c7671 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs @@ -120,7 +120,7 @@ public static AssemblyDefinitionInfo Parse(FileInfo file, UnityProjectInfo unity /// Gets whether this is marked as a TestAssembly. /// public bool TestAssembly { get; private set; } - + /// /// Gets whether this is a default assembly definition like Assembly-CSharp /// @@ -194,8 +194,8 @@ public SourceFileInfo[] GetSources() { foreach (string sourceFile in assembly.sourceFiles) { - MonoScript asset = AssetDatabase.LoadAssetAtPath(sourceFile); - sourceFiles.Add(SourceFileInfo.Parse(new FileInfo(Utilities.GetFullPathFromKnownRelative(sourceFile)), asset.GetClass())); + FileInfo fileInfo = new FileInfo(Utilities.GetFullPathFromKnownRelative(sourceFile)); + sourceFiles.Add(new SourceFileInfo(fileInfo, Utilities.GetAssetLocation(fileInfo), sourceFile)); } } else @@ -218,7 +218,7 @@ private void SearchForSourceFiles(List sourceFiles, DirectoryInf foreach (FileInfo fileInfo in directory.GetFiles("*.cs", SearchOption.TopDirectoryOnly)) { - sourceFiles.Add(SourceFileInfo.Parse(fileInfo, null)); + sourceFiles.Add(new SourceFileInfo(fileInfo, Utilities.GetAssetLocation(fileInfo), null)); } foreach (DirectoryInfo subDirectory in directory.GetDirectories("*", SearchOption.TopDirectoryOnly)) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssetScriptReferenceRetargeter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssetScriptReferenceRetargeter.cs index 297547d..ef0b3f8 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssetScriptReferenceRetargeter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssetScriptReferenceRetargeter.cs @@ -13,6 +13,7 @@ using UnityEditor.Compilation; using UnityEditorInternal; using UnityEngine; +using Microsoft.Build.Unity.ProjectGeneration.Templates; using Object = UnityEngine.Object; namespace Microsoft.Build.Unity.ProjectGeneration diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/CSProjectInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/CSProjectInfo.cs index e4de04c..39f3400 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/CSProjectInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/CSProjectInfo.cs @@ -70,9 +70,8 @@ public class CSProjectInfo : ReferenceItemInfo /// The unique Guid of this reference item. /// The associated Assembly-Definition info. /// The Unity assembly object associated with this csproj. - /// The output path where everything will be outputted. - internal CSProjectInfo(UnityProjectInfo unityProjectInfo, AssemblyDefinitionInfo assemblyDefinitionInfo, string baseOutputPath) - : base(unityProjectInfo, assemblyDefinitionInfo.Guid, new Uri(Path.Combine(baseOutputPath, $"{assemblyDefinitionInfo.Name}.csproj")), assemblyDefinitionInfo.Name) + internal CSProjectInfo(UnityProjectInfo unityProjectInfo, AssemblyDefinitionInfo assemblyDefinitionInfo) + : base(unityProjectInfo, assemblyDefinitionInfo.Guid, assemblyDefinitionInfo.Name) { AssemblyDefinitionInfo = assemblyDefinitionInfo; diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs index 288cc3f..030d34b 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs @@ -1,16 +1,35 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. + #if UNITY_EDITOR +using System.IO; + namespace Microsoft.Build.Unity.ProjectGeneration.Exporters { /// - /// This interface exposes teh APIs for exporting projects. + /// This interface exposes the APIs for exporting projects. /// public interface IProjectExporter { + /// + /// Given a C# project, get its export path. + /// + /// The parsed representing the C# project. + /// The path to the project. + FileInfo GetProjectPath(CSProjectInfo projectInfo); + + /// + /// Exports a C# project given the information. + /// + /// This contains parsed data about the current Unity project. + /// The parsed representing the C# project. void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo); + /// + /// Exports the MSBuild solution given the information. + /// + /// This contains parsed data about the current Unity project. void ExportSolution(UnityProjectInfo unityProjectInfo); } } -#endif \ No newline at end of file +#endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs index 5f3ab31..6932e34 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs @@ -2,11 +2,11 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. #if UNITY_EDITOR +using Microsoft.Build.Unity.ProjectGeneration.Templates; using System; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Text; using UnityEditor; using UnityEngine; @@ -19,26 +19,45 @@ public class TemplatedProjectExporter : IProjectExporter { private readonly DirectoryInfo propsOutputFolder; - private readonly string solutionFileTemplateText; - private readonly string projectFileTemplateText; - private readonly string projectPropsFileTemplateText; - private readonly string projectTargetsFileTemplateText; - - public TemplatedProjectExporter(DirectoryInfo propsOuputFolder, FileInfo solutionFileTemplatePath, FileInfo projectFileTemplatePath, FileInfo projectPropsFileTemplatePath, FileInfo projectTargetsFileTemplatePath) + private readonly FileTemplate projectFileTemplate; + private readonly FileTemplate propsFileTemplate; + private readonly FileTemplate targetsFileTemplate; + + private readonly FileTemplate solutionFileTemplate; + + /// + /// Creates a new instance of the template driven . + /// + /// The output folder for the projects and props. + /// The path to the solution template. + /// The path to the C# project file template. + /// The path to the props file template. + /// The path to the targets file template. + public TemplatedProjectExporter(DirectoryInfo propsOutputFolder, FileInfo solutionFileTemplatePath, FileInfo projectFileTemplatePath, FileInfo projectPropsFileTemplatePath, FileInfo projectTargetsFileTemplatePath) { - propsOutputFolder = propsOuputFolder; + this.propsOutputFolder = propsOutputFolder; + + FileTemplate.TryParseTemplate(projectFileTemplatePath, out projectFileTemplate); + FileTemplate.TryParseTemplate(projectPropsFileTemplatePath, out propsFileTemplate); + FileTemplate.TryParseTemplate(projectTargetsFileTemplatePath, out targetsFileTemplate); - solutionFileTemplateText = File.ReadAllText(solutionFileTemplatePath.FullName); - projectFileTemplateText = File.ReadAllText(projectFileTemplatePath.FullName); - projectPropsFileTemplateText = File.ReadAllText(projectPropsFileTemplatePath.FullName); - projectTargetsFileTemplateText = File.ReadAllText(projectTargetsFileTemplatePath.FullName); + FileTemplate.TryParseTemplate(solutionFileTemplatePath, out solutionFileTemplate); + } + + /// + public FileInfo GetProjectPath(CSProjectInfo projectInfo) + { + return new FileInfo(Path.Combine(propsOutputFolder.FullName, $"{projectInfo.Name}.csproj")); } + /// public void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo) { - if (File.Exists(projectInfo.ReferencePath.AbsolutePath)) + string projectPath = GetProjectPath(projectInfo).FullName; + + if (File.Exists(projectPath)) { - File.Delete(projectInfo.ReferencePath.AbsolutePath); + File.Delete(projectPath); } if (!TryExportPropsFile(unityProjectInfo, projectInfo)) @@ -53,85 +72,72 @@ public void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo proje return; } - if (File.Exists(projectInfo.ReferencePath.AbsolutePath)) + if (File.Exists(projectPath)) { Debug.Log($"Skipping replacing the existing C# project file {projectInfo.Name}"); } else { - File.WriteAllText(projectInfo.ReferencePath.AbsolutePath, projectFileTemplateText); + projectFileTemplate.Write(projectPath, projectFileTemplate.Root.CreateReplacementSet()); } } private bool TryExportPropsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo) { - if (!Utilities.TryGetXMLTemplate(projectPropsFileTemplateText, "PROJECT_REFERENCE_SET", out string projectReferenceSetTemplate) - || !Utilities.TryGetXMLTemplate(projectPropsFileTemplateText, "SOURCE_INCLUDE", out string sourceIncludeTemplate)) - { - return false; - } + ITemplatePart rootTemplatePart = propsFileTemplate.Root; + TemplateReplacementSet rootReplacementSet = rootTemplatePart.CreateReplacementSet(); + + ITemplatePart projectReferenceSetTemplatePart = rootTemplatePart.Templates["PROJECT_REFERENCE_SET"]; + ITemplatePart sourceIncludeTemplatePart = rootTemplatePart.Templates["SOURCE_INCLUDE"]; + + string projectPath = GetProjectPath(projectInfo).FullName; - List sourceIncludes = new List(); - Dictionary sourceGuidToClassName = new Dictionary(); + //Dictionary sourceGuidToClassName = new Dictionary(); foreach (SourceFileInfo source in projectInfo.AssemblyDefinitionInfo.GetSources()) { - ProcessSourceFile(projectInfo, source, sourceIncludeTemplate, sourceIncludes, sourceGuidToClassName); + //sourceGuidToClassName.Add(source.Guid, source.ClassType?.FullName); + ProcessSourceFile(projectInfo, source, sourceIncludeTemplatePart, rootReplacementSet); } - File.WriteAllLines(Path.Combine(propsOutputFolder.FullName, $"{projectInfo.Guid.ToString()}.csmap"), sourceGuidToClassName.Select(t => $"{t.Key.ToString("N")}:{t.Value}")); + // For now don't create .csmaps; not used yet anyways + //File.WriteAllLines(Path.Combine(propsOutputFolder.FullName, $"{projectInfo.Guid.ToString()}.csmap"), sourceGuidToClassName.Select(t => $"{t.Key.ToString("N")}:{t.Value}")); HashSet inEditorSearchPaths = new HashSet(), playerSearchPaths = new HashSet(); - string projectReferences = string.Join("\r\n", CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplate, inEditorSearchPaths, true), CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplate, playerSearchPaths, false)); - Dictionary tokens = new Dictionary() - { - { "", projectInfo.Guid.ToString() }, - { "", projectInfo.AssemblyDefinitionInfo.allowUnsafeCode.ToString() }, - { "", MSBuildTools.CSharpVersion }, - - { "", "false" }, // Default to false - - { "", (projectInfo.ProjectType == ProjectType.EditorAsmDef || projectInfo.ProjectType == ProjectType.PredefinedEditorAssembly).ToString() }, - { "", Path.GetDirectoryName(EditorApplication.applicationPath) + "\\"}, - - { "", unityProjectInfo.AvailablePlatforms.First(t=>t.BuildTarget == BuildTarget.StandaloneWindows).Name }, - - { "", string.Join(";", unityProjectInfo.AvailablePlatforms.Select(t=>t.Name)) }, - - { "", string.Join(";", inEditorSearchPaths) }, - { "", string.Join(";", playerSearchPaths) }, - - { "##PLATFORM_PROPS_FOLDER_PATH_TOKEN##", propsOutputFolder.FullName }, - - { projectReferenceSetTemplate, projectReferences }, - { sourceIncludeTemplate, string.Join("\r\n", sourceIncludes) } - }; - - File.WriteAllText(projectInfo.ReferencePath.AbsolutePath.Replace("csproj", "g.props"), Utilities.ReplaceTokens(projectPropsFileTemplateText, tokens, true)); - + CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplatePart, rootReplacementSet, inEditorSearchPaths, true); + CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplatePart, rootReplacementSet, playerSearchPaths, false); + + rootTemplatePart.Tokens["PROJECT_GUID"].AssignValue(rootReplacementSet, projectInfo.Guid.ToString()); + rootTemplatePart.Tokens["ALLOW_UNSAFE"].AssignValue(rootReplacementSet, projectInfo.AssemblyDefinitionInfo.allowUnsafeCode.ToString()); + rootTemplatePart.Tokens["LANGUAGE_VERSION"].AssignValue(rootReplacementSet, MSBuildTools.CSharpVersion); + rootTemplatePart.Tokens["DEVELOPMENT_BUILD"].AssignValue(rootReplacementSet, "false"); + rootTemplatePart.Tokens["IS_EDITOR_ONLY_TARGET"].AssignValue(rootReplacementSet, (projectInfo.ProjectType == ProjectType.EditorAsmDef || projectInfo.ProjectType == ProjectType.PredefinedEditorAssembly).ToString()); + rootTemplatePart.Tokens["UNITY_EDITOR_INSTALL_FOLDER"].AssignValue(rootReplacementSet, Path.GetDirectoryName(EditorApplication.applicationPath) + "\\"); + rootTemplatePart.Tokens["DEFAULT_PLATFORM"].AssignValue(rootReplacementSet, unityProjectInfo.AvailablePlatforms.First(t => t.BuildTarget == BuildTarget.StandaloneWindows).Name); + rootTemplatePart.Tokens["SUPPORTED_PLATFORMS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", unityProjectInfo.AvailablePlatforms.Select(t => t.Name))); + rootTemplatePart.Tokens["INEDITOR_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", inEditorSearchPaths)); + rootTemplatePart.Tokens["PLAYER_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", playerSearchPaths)); + rootTemplatePart.Tokens["PLATFORM_PROPS_FOLDER_PATH"].AssignValue(rootReplacementSet, propsOutputFolder.FullName); + + propsFileTemplate.Write(projectPath.Replace("csproj", "g.props"), rootReplacementSet); return true; } private bool TryExportTargetsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo) { - if (!Utilities.TryGetXMLTemplate(projectTargetsFileTemplateText, "SUPPORTED_PLATFORM_BUILD_CONDITION", out string suportedPlatformBuildConditionTemplate)) - { - return false; - } + string projectPath = GetProjectPath(projectInfo).FullName; + ITemplatePart rootTemplatePart = targetsFileTemplate.Root; + TemplateReplacementSet rootReplacementSet = rootTemplatePart.CreateReplacementSet(); + ITemplatePart supportedPlatformBuildTemplate = rootTemplatePart.Templates["SUPPORTED_PLATFORM_BUILD_CONDITION"]; - List supportedPlatformBuildConditions = new List(); - PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "InEditor", projectInfo.InEditorPlatforms); - PopulateSupportedPlatformBuildConditions(supportedPlatformBuildConditions, suportedPlatformBuildConditionTemplate, "Player", projectInfo.PlayerPlatforms); + PopulateSupportedPlatformBuildConditions(supportedPlatformBuildTemplate, rootReplacementSet, "InEditor", projectInfo.InEditorPlatforms); + PopulateSupportedPlatformBuildConditions(supportedPlatformBuildTemplate, rootReplacementSet, "Player", projectInfo.PlayerPlatforms); - Dictionary tokens = new Dictionary() - { - { suportedPlatformBuildConditionTemplate, string.Join("\r\n", supportedPlatformBuildConditions) } - }; - - File.WriteAllText(projectInfo.ReferencePath.AbsolutePath.Replace("csproj", "g.targets"), Utilities.ReplaceTokens(projectTargetsFileTemplateText, tokens, true)); + targetsFileTemplate.Write(projectPath.Replace("csproj", "g.targets"), rootReplacementSet); return true; } + /// public void ExportSolution(UnityProjectInfo unityProjectInfo) { string solutionFilePath = Path.Combine(propsOutputFolder.FullName, $"{unityProjectInfo.UnityProjectName}.sln"); @@ -140,97 +146,91 @@ public void ExportSolution(UnityProjectInfo unityProjectInfo) { File.Delete(solutionFilePath); } - string solutionTemplateText = solutionFileTemplateText; + ITemplatePart rootTemplatePart = solutionFileTemplate.Root; + TemplateReplacementSet rootReplacementSet = rootTemplatePart.CreateReplacementSet(); - if (Utilities.TryGetTextTemplate(solutionFileTemplateText, "PROJECT", out string projectEntryTemplate, out string projectEntryTemplateBody) - && Utilities.TryGetTextTemplate(solutionFileTemplateText, "CONFIGURATION_PLATFORM", out string configurationPlatformEntry, out string configurationPlatformEntryBody) - && Utilities.TryGetTextTemplate(solutionFileTemplateText, "CONFIGURATION_PLATFORM_MAPPING", out string configurationPlatformMappingTemplate, out string configurationPlatformMappingTemplateBody) - && Utilities.TryGetTextTemplate(solutionFileTemplateText, "CONFIGURATION_PLATFORM_ENABLED", out string configurationPlatformEnabledTemplate, out string configurationPlatformEnabledTemplateBody)) - { - CSProjectInfo[] unorderedProjects = unityProjectInfo.CSProjects.Select(t => t.Value).ToArray(); - List orderedProjects = new List(); + ITemplatePart projectTemplate = rootTemplatePart.Templates["PROJECT"]; + ITemplatePart configPlatformTemplate = rootTemplatePart.Templates["CONFIGURATION_PLATFORM"]; + ITemplatePart configPlatformMappingTemplate = rootTemplatePart.Templates["CONFIGURATION_PLATFORM_MAPPING"]; + ITemplatePart configPlatformEnabledTemplate = rootTemplatePart.Templates["CONFIGURATION_PLATFORM_ENABLED"]; - while (orderedProjects.Count < unorderedProjects.Length) + CSProjectInfo[] unorderedProjects = unityProjectInfo.CSProjects.Select(t => t.Value).ToArray(); + List orderedProjects = new List(); + + while (orderedProjects.Count < unorderedProjects.Length) + { + bool oneRemoved = false; + for (int i = 0; i < unorderedProjects.Length; i++) { - bool oneRemoved = false; - for (int i = 0; i < unorderedProjects.Length; i++) + if (unorderedProjects[i] == null) { - if (unorderedProjects[i] == null) - { - continue; - } - - if (unorderedProjects[i].ProjectDependencies.Count == 0 || unorderedProjects[i].ProjectDependencies.All(t => orderedProjects.Contains(t.Dependency))) - { - orderedProjects.Add(unorderedProjects[i]); - - unorderedProjects[i] = null; - oneRemoved = true; - } + continue; } - if (!oneRemoved) + if (unorderedProjects[i].ProjectDependencies.Count == 0 || unorderedProjects[i].ProjectDependencies.All(t => orderedProjects.Contains(t.Dependency))) { - Debug.LogError($"Possible circular dependency."); - break; + orderedProjects.Add(unorderedProjects[i]); + + unorderedProjects[i] = null; + oneRemoved = true; } } - IEnumerable projectEntries = orderedProjects.Select(t => GetProjectEntry(t, projectEntryTemplateBody)); + if (!oneRemoved) + { + Debug.LogError($"Possible circular dependency."); + break; + } + } + foreach (CSProjectInfo project in orderedProjects) + { + TemplateReplacementSet replacementSet = projectTemplate.CreateReplacementSet(rootReplacementSet); + ProcessProjectEntry(project, projectTemplate, replacementSet); + } + + ITemplateToken configPlatform_ConfigurationToken = configPlatformTemplate.Tokens["CONFIGURATION"]; + ITemplateToken configPlatform_PlatformToken = configPlatformTemplate.Tokens["PLATFORM"]; + foreach (CompilationPlatformInfo platform in unityProjectInfo.AvailablePlatforms) + { + TemplateReplacementSet replacementSet = configPlatformTemplate.CreateReplacementSet(rootReplacementSet); + configPlatform_ConfigurationToken.AssignValue(replacementSet, "InEditor"); + configPlatform_PlatformToken.AssignValue(replacementSet, platform.Name); - string[] twoConfigs = new string[] { - configurationPlatformEntryBody.Replace("", "InEditor"), - configurationPlatformEntryBody.Replace("", "Player") - }; + replacementSet = configPlatformTemplate.CreateReplacementSet(rootReplacementSet); + configPlatform_ConfigurationToken.AssignValue(replacementSet, "Player"); + configPlatform_PlatformToken.AssignValue(replacementSet, platform.Name); + } - IEnumerable configPlatforms = twoConfigs - .SelectMany(t => unityProjectInfo.AvailablePlatforms.Select(p => t.Replace("", p.Name.ToString()))); + List disabled = new List(); - List configurationMappings = new List(); - List disabled = new List(); + foreach (CSProjectInfo project in orderedProjects.Select(t => t)) + { + void ConfigurationTemplateReplace(ITemplatePart templatePart, TemplateReplacementSet replacementSet, string guid, string configuration, string platform) + { + templatePart.Tokens["PROJECT_GUID"].AssignValue(replacementSet, guid.ToString().ToUpper()); + templatePart.Tokens["PROJECT_CONFIGURATION"].AssignValue(replacementSet, configuration); + templatePart.Tokens["PROJECT_PLATFORM"].AssignValue(replacementSet, platform); + templatePart.Tokens["SOLUTION_CONFIGURATION"].AssignValue(replacementSet, configuration); + templatePart.Tokens["SOLUTION_PLATFORM"].AssignValue(replacementSet, platform); + } - foreach (CSProjectInfo project in orderedProjects.Select(t => t)) + void ProcessMappings(Guid guid, string configuration, IReadOnlyDictionary platforms) { - string ConfigurationTemplateReplace(string template, string guid, string configuration, string platform) + foreach (CompilationPlatformInfo platform in unityProjectInfo.AvailablePlatforms) { - return Utilities.ReplaceTokens(template, new Dictionary() - { - { "", guid.ToString().ToUpper() }, - { "", configuration }, - { "", platform }, - { "", configuration }, - { "", platform }, - }); - } + TemplateReplacementSet replacemetSet = configPlatformMappingTemplate.CreateReplacementSet(rootReplacementSet); + ConfigurationTemplateReplace(configPlatformMappingTemplate, replacemetSet, guid.ToString(), configuration, platform.Name); - void ProcessMappings(Guid guid, string configuration, IReadOnlyDictionary platforms) - { - foreach (CompilationPlatformInfo platform in unityProjectInfo.AvailablePlatforms) + if (platforms.ContainsKey(platform.BuildTarget)) { - configurationMappings.Add(ConfigurationTemplateReplace(configurationPlatformMappingTemplateBody, guid.ToString(), configuration, platform.Name)); - - if (platforms.ContainsKey(platform.BuildTarget)) - { - configurationMappings.Add(ConfigurationTemplateReplace(configurationPlatformEnabledTemplateBody, guid.ToString(), configuration, platform.Name)); - } + replacemetSet = configPlatformEnabledTemplate.CreateReplacementSet(rootReplacementSet); + ConfigurationTemplateReplace(configPlatformEnabledTemplate, replacemetSet, guid.ToString(), configuration, platform.Name); } } - - ProcessMappings(project.Guid, "InEditor", project.InEditorPlatforms); - ProcessMappings(project.Guid, "Player", project.PlayerPlatforms); } - solutionTemplateText = Utilities.ReplaceTokens(solutionFileTemplateText, new Dictionary() - { - { projectEntryTemplate, string.Join(Environment.NewLine, projectEntries)}, - { configurationPlatformEntry, string.Join(Environment.NewLine, configPlatforms)}, - { configurationPlatformMappingTemplate, string.Join(Environment.NewLine, configurationMappings) }, - { configurationPlatformEnabledTemplate, string.Join(Environment.NewLine, disabled) } - }); - } - else - { - Debug.LogError("Failed to find Project and/or Configuration_Platform templates in the solution template file."); + ProcessMappings(project.Guid, "InEditor", project.InEditorPlatforms); + ProcessMappings(project.Guid, "Player", project.PlayerPlatforms); } foreach (CSProjectInfo project in unityProjectInfo.CSProjects.Values) @@ -238,14 +238,11 @@ void ProcessMappings(Guid guid, string configuration, IReadOnlyDictionary sourceIncludes, Dictionary sourceGuidToClassName) + private void ProcessSourceFile(CSProjectInfo projectInfo, SourceFileInfo sourceFile, ITemplatePart templatePart, TemplateReplacementSet parentReplacementSet) { - // Get the entry for the map - sourceGuidToClassName.Add(sourceFile.Guid, sourceFile.ClassType?.FullName); - string linkPath = Utilities.GetRelativePath(projectInfo.AssemblyDefinitionInfo.Directory.FullName, sourceFile.File.FullName); string relativeSourcePath; @@ -259,86 +256,65 @@ private void ProcessSourceFile(CSProjectInfo projectInfo, SourceFileInfo sourceF relativeSourcePath = $"..\\..\\{Utilities.GetAssetsRelativePathFrom(sourceFile.File.FullName)}"; break; case AssetLocation.Package: - relativeSourcePath = $"..\\..\\{Utilities.GetPackagesRelativePathFrom(sourceFile.File.FullName)}"; + relativeSourcePath = sourceFile.File.FullName.Replace(Utilities.ProjectPath, "..\\..\\"); break; - case AssetLocation.PackageCopy: - relativeSourcePath = $"..\\{Utilities.GetPackagesRelativePathFrom(sourceFile.File.FullName)}"; + case AssetLocation.PackageLibraryCache: + relativeSourcePath = sourceFile.File.FullName.Replace(Utilities.ProjectPath, "..\\..\\"); break; case AssetLocation.External: relativeSourcePath = sourceFile.File.FullName; - Debug.LogWarning($"Referencing external source file with full path '{sourceFile.File.FullName}'"); break; default: throw new InvalidDataException("Unknown asset location."); } - sourceIncludes.Add(Utilities.ReplaceTokens(sourceIncludeTemplate, new Dictionary() - { - {"##RELATIVE_SOURCE_PATH##", relativeSourcePath }, - {"##PROJECT_LINK_PATH##", linkPath } - })); + TemplateReplacementSet replacementSet = templatePart.CreateReplacementSet(parentReplacementSet); + templatePart.Tokens["RELATIVE_SOURCE_PATH"].AssignValue(replacementSet, relativeSourcePath); + templatePart.Tokens["PROJECT_LINK_PATH"].AssignValue(replacementSet, linkPath); } - private void PopulateSupportedPlatformBuildConditions(List supportedPlatformBuildConditions, string template, string configuration, IReadOnlyDictionary platforms) + private void PopulateSupportedPlatformBuildConditions(ITemplatePart templatePart, TemplateReplacementSet parentReplacementSet, string configuration, IReadOnlyDictionary platforms) { foreach (KeyValuePair platform in platforms) { - supportedPlatformBuildConditions.Add(Utilities.ReplaceTokens(template, new Dictionary() - { - { "##SUPPORTED_CONFIGURATION_TOKEN##", configuration }, - { "##SUPPORTED_PLATFORM_TOKEN##", platform.Value.Name } - })); + TemplateReplacementSet replacementSet = templatePart.CreateReplacementSet(parentReplacementSet); + templatePart.Tokens["SUPPORTED_CONFIGURATION"].AssignValue(replacementSet, configuration); + templatePart.Tokens["SUPPORTED_PLATFORM"].AssignValue(replacementSet, platform.Value.Name); } } - private string CreateProjectReferencesSet(CSProjectInfo projectInfo, string template, HashSet additionalSearchPaths, bool inEditor) + private void CreateProjectReferencesSet(CSProjectInfo projectInfo, ITemplatePart templatePart, TemplateReplacementSet parentReplacementSet, HashSet additionalSearchPaths, bool inEditor) { - if (Utilities.TryGetXMLTemplate(template, "PROJECT_REFERENCE", out string projectReferenceTemplate) - && Utilities.TryGetXMLTemplate(template, "PLUGIN_REFERENCE", out string pluginReferenceTemplate)) + TemplateReplacementSet templateReplacementSet = templatePart.CreateReplacementSet(parentReplacementSet); + ITemplatePart projectReferenceTemplatePart = templatePart.Templates["PROJECT_REFERENCE"]; + ITemplatePart pluginReferenceTemplatePart = templatePart.Templates["PLUGIN_REFERENCE"]; + + foreach (CSProjectDependency dependency in projectInfo.ProjectDependencies) { - List projectReferences = new List(); - foreach (CSProjectDependency dependency in projectInfo.ProjectDependencies) - { - List platformConditions = GetPlatformConditions(inEditor ? projectInfo.InEditorPlatforms : projectInfo.PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); + List platformConditions = GetPlatformConditions(inEditor ? projectInfo.InEditorPlatforms : projectInfo.PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); - projectReferences.Add(Utilities.ReplaceTokens(projectReferenceTemplate, new Dictionary() - { - { "##REFERENCE_TOKEN##", $"{dependency.Dependency.Name}.csproj" }, - { "", dependency.Dependency.ReferencePath.AbsolutePath }, - { "##CONDITION_TOKEN##", platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)} - })); - } + TemplateReplacementSet replacementSet = projectReferenceTemplatePart.CreateReplacementSet(templateReplacementSet); + projectReferenceTemplatePart.Tokens["REFERENCE"].AssignValue(replacementSet, $"{dependency.Dependency.Name}.csproj"); + //projectReferenceTemplatePart.Tokens["HINT_PATH"].AssignValue(replacementSet, GetProjectPath(dependency.Dependency).AbsolutePath); + projectReferenceTemplatePart.Tokens["CONDITION"].AssignValue(replacementSet, platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)); + } - List pluginReferences = new List(); - foreach (CSProjectDependency dependency in projectInfo.PluginDependencies) + foreach (CSProjectDependency dependency in projectInfo.PluginDependencies) + { + if (dependency.Dependency.Type == PluginType.Native) { - if (dependency.Dependency.Type == PluginType.Native) - { - continue; - } - List platformConditions = GetPlatformConditions(inEditor ? projectInfo.InEditorPlatforms : projectInfo.PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); - - pluginReferences.Add(Utilities.ReplaceTokens(pluginReferenceTemplate, new Dictionary() - { - { "##REFERENCE_TOKEN##", dependency.Dependency.Name }, - { "##CONDITION_TOKEN##", platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)}, - { "", dependency.Dependency.ReferencePath.AbsolutePath } - })); - - additionalSearchPaths.Add(Path.GetDirectoryName(dependency.Dependency.ReferencePath.AbsolutePath)); + continue; } + List platformConditions = GetPlatformConditions(inEditor ? projectInfo.InEditorPlatforms : projectInfo.PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); - return Utilities.ReplaceTokens(template, new Dictionary() - { - {"##REFERENCE_CONFIGURATION_TOKEN##", inEditor ? "InEditor" : "Player" }, - { projectReferenceTemplate, string.Join("\r\n", projectReferences) }, - { pluginReferenceTemplate, string.Join("\r\n", pluginReferences) } - }); - } - else - { - Debug.LogError("Failed to find ProjectReference template in ProjectReferenceSet template"); - return template; + TemplateReplacementSet replacementSet = pluginReferenceTemplatePart.CreateReplacementSet(templateReplacementSet); + pluginReferenceTemplatePart.Tokens["REFERENCE"].AssignValue(replacementSet, dependency.Dependency.Name); + pluginReferenceTemplatePart.Tokens["HINT_PATH"].AssignValue(replacementSet, dependency.Dependency.ReferencePath.AbsolutePath); + pluginReferenceTemplatePart.Tokens["CONDITION"].AssignValue(replacementSet, platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)); + + additionalSearchPaths.Add(Path.GetDirectoryName(dependency.Dependency.ReferencePath.AbsolutePath)); } + + templatePart.Tokens["REFERENCE_CONFIGURATION"].AssignValue(templateReplacementSet, inEditor ? "InEditor" : "Player"); } private List GetPlatformConditions(IReadOnlyDictionary platforms, HashSet dependencyPlatforms) @@ -357,31 +333,24 @@ private List GetPlatformConditions(IReadOnlyDictionary() { - { "", projectInfo.Name }, - { "", Path.GetFileName(projectInfo.ReferencePath.AbsolutePath) }, - { "", projectInfo.Guid.ToString().ToUpper() } })); + ITemplatePart dependencyTemplate = templatePart.Templates["PROJECT_DEPENDENCY"]; if (projectInfo.ProjectDependencies.Count > 0) { - string projectDependencyStartSection = " ProjectSection(ProjectDependencies) = postProject"; - string projectDependencyGuid = " {} = {}"; - string projectDependencyStopSection = " EndProjectSection"; - toReturn.AppendLine(projectDependencyStartSection); - foreach (CSProjectDependency project in projectInfo.ProjectDependencies) { - toReturn.AppendLine(projectDependencyGuid.Replace("", project.Dependency.Guid.ToString().ToUpper())); + TemplateReplacementSet set = dependencyTemplate.CreateReplacementSet(replacementSet); + dependencyTemplate.Tokens["DEPENDENCY_GUID"].AssignValue(set, project.Dependency.Guid.ToString().ToUpper()); } - - toReturn.AppendLine(projectDependencyStopSection); } - toReturn.Append("EndProject"); - return toReturn.ToString(); } } } diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs index a2cb239..bb063eb 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs @@ -3,13 +3,16 @@ #if UNITY_EDITOR using Microsoft.Build.Unity.ProjectGeneration.Exporters; +using Microsoft.Build.Unity.ProjectGeneration.Templates; using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; +using Debug = UnityEngine.Debug; namespace Microsoft.Build.Unity.ProjectGeneration { @@ -33,6 +36,10 @@ public static class MSBuildTools private static readonly string uwpMinPlatformVersion = EditorUserBuildSettings.wsaMinUWPSDK; private static readonly string uwpTargetPlatformVersion = EditorUserBuildSettings.wsaUWPSDK; + private static IProjectExporter exporter = null; + + private static IProjectExporter Exporter => exporter ?? (exporter = new TemplatedProjectExporter(new DirectoryInfo(Utilities.MSBuildProjectFolder), TemplateFiles.Instance.MSBuildSolutionTemplatePath, TemplateFiles.Instance.SDKProjectFileTemplatePath, TemplateFiles.Instance.SDKProjectPropsFileTemplatePath, TemplateFiles.Instance.SDKProjectTargetsFileTemplatePath)); + [MenuItem("MSBuild/Generate C# SDK Projects", priority = 101)] public static void GenerateSDKProjects() { @@ -50,57 +57,65 @@ public static void GenerateSDKProjects() private static void RunGenerateSDKProjects() { - // Create a copy of the packages as they might change after we create the MSBuild project - string generatedProjectPath = Path.Combine(Utilities.MSBuildOutputFolder, "Projects"); + Stopwatch stopwatch = new Stopwatch(); + stopwatch.Start(); + long postCleanupAndCopyStamp = 0, solutionExportStart = 0, solutionExportEnd = 0, exporterStart = 0, exporterEnd = 0, propsFileGenerationStart = 0, propsFileGenerationEnd = 0; try { - Utilities.EnsureCleanDirectory(generatedProjectPath); - } - catch (IOException ex) - { - if (ex.Message.Contains(@"db.lock")) + // Create a copy of the packages as they might change after we create the MSBuild project + try { - Debug.LogError("Generated project appears to be still open with Visual Studio."); - throw new InvalidDataException("Generated project appears to be still open with Visual Studio.", ex); + Utilities.EnsureCleanDirectory(Utilities.MSBuildProjectFolder); } - else + catch (IOException ex) { - throw; + if (ex.Message.Contains(@"db.lock")) + { + Debug.LogError("Generated project appears to be still open with Visual Studio."); + throw new InvalidDataException("Generated project appears to be still open with Visual Studio.", ex); + } + else + { + throw; + } } - } - Utilities.EnsureCleanDirectory(Path.Combine(Utilities.MSBuildOutputFolder, "Output")); + Utilities.EnsureCleanDirectory(Path.Combine(Utilities.MSBuildOutputFolder, "Output")); - MakePackagesCopy(Utilities.MSBuildOutputFolder); + postCleanupAndCopyStamp = stopwatch.ElapsedMilliseconds; - List platforms = CompilationPipeline.GetAssemblyDefinitionPlatforms() - .Where(t => supportedBuildTargets.Contains(t.BuildTarget)) - .Select(CompilationPlatformInfo.GetCompilationPlatform) - .OrderBy(t => t.Name) - .ToList(); + List platforms = CompilationPipeline.GetAssemblyDefinitionPlatforms() + .Where(t => supportedBuildTargets.Contains(t.BuildTarget)) + .Select(CompilationPlatformInfo.GetCompilationPlatform) + .OrderBy(t => t.Name) + .ToList(); - CompilationPlatformInfo editorPlatform = CompilationPlatformInfo.GetEditorPlatform(); + CompilationPlatformInfo editorPlatform = CompilationPlatformInfo.GetEditorPlatform(); - CreateCommonPropsFile(platforms, editorPlatform, generatedProjectPath); - UnityProjectInfo unityProjectInfo = new UnityProjectInfo(platforms, generatedProjectPath); + propsFileGenerationStart = stopwatch.ElapsedMilliseconds; + CreateCommonPropsFile(platforms, editorPlatform, Utilities.MSBuildProjectFolder); + propsFileGenerationEnd = stopwatch.ElapsedMilliseconds; + UnityProjectInfo unityProjectInfo = new UnityProjectInfo(platforms); - IProjectExporter exporter = new TemplatedProjectExporter( - new DirectoryInfo(generatedProjectPath), - TemplateFiles.Instance.MSBuildSolutionTemplatePath, - TemplateFiles.Instance.SDKProjectFileTemplatePath, - TemplateFiles.Instance.SDKProjectPropsFileTemplatePath, - TemplateFiles.Instance.SDKProjectTargetsFileTemplatePath); - exporter.ExportSolution(unityProjectInfo); + solutionExportStart = stopwatch.ElapsedMilliseconds; + Exporter.ExportSolution(unityProjectInfo); + solutionExportEnd = stopwatch.ElapsedMilliseconds; - foreach (string otherFile in TemplateFiles.Instance.OtherFiles) - { - File.Copy(otherFile, Path.Combine(generatedProjectPath, Path.GetFileName(otherFile))); - } + foreach (string otherFile in TemplateFiles.Instance.OtherFiles) + { + File.Copy(otherFile, Path.Combine(Utilities.MSBuildProjectFolder, Path.GetFileName(otherFile))); + } - string buildProjectsFile = "BuildProjects.proj"; - if (!File.Exists(Path.Combine(Utilities.MSBuildOutputFolder, buildProjectsFile))) + string buildProjectsFile = "BuildProjects.proj"; + if (!File.Exists(Path.Combine(Utilities.MSBuildOutputFolder, buildProjectsFile))) + { + GenerateBuildProjectsFile(buildProjectsFile, unityProjectInfo.UnityProjectName, platforms); + } + } + finally { - GenerateBuildProjectsFile(buildProjectsFile, unityProjectInfo.UnityProjectName, platforms); + stopwatch.Stop(); + Debug.Log($"Whole Generate Projects process took {stopwatch.ElapsedMilliseconds} ms; actual generation took {stopwatch.ElapsedMilliseconds - postCleanupAndCopyStamp}; solution export: {solutionExportEnd - solutionExportStart}; exporter creation: {exporterEnd - exporterStart}; props file generation: {propsFileGenerationEnd - propsFileGenerationStart}"); } } @@ -148,20 +163,6 @@ private static void GenerateBuildProjectsFile(string fileName, string projectNam File.WriteAllText(Path.Combine(Utilities.MSBuildOutputFolder, "BuildAll.bat"), string.Join("\r\n", batBuildEntry)); } - private static void MakePackagesCopy(string msbuildFolder) - { - string packageCache = Path.Combine(Application.dataPath, "..", "Library/PackageCache"); - string[] directories = Directory.GetDirectories(packageCache); - - string outputDirectory = Path.Combine(msbuildFolder, Utilities.PackagesCopyFolderName); - Utilities.EnsureCleanDirectory(outputDirectory); - - foreach (string directory in directories) - { - Utilities.CopyDirectory(directory, Path.Combine(outputDirectory, Path.GetFileName(directory).Split('@')[0]), ".asmdef", ".asmdef.meta", ".cs", ".cs.meta", ".template", ".template.meta", ".dll", ".dll.meta"); - } - } - private static void CreateCommonPropsFile(IEnumerable availablePlatforms, CompilationPlatformInfo editorPlatform, string projectOutputFolder) { foreach (CompilationPlatformInfo platform in availablePlatforms) @@ -178,75 +179,71 @@ private static void ProcessPlatformTemplateForConfiguration(CompilationPlatformI { string configuration = inEditorConfiguration ? "InEditor" : "Player"; - string platformTemplate = File.ReadAllText(TemplateFiles.Instance.GetTemplateFilePathForPlatform(platform.Name, configuration, platform.ScriptingBackend)); + if (!FileTemplate.TryParseTemplate(TemplateFiles.Instance.GetTemplateFilePathForPlatform(platform.Name, configuration, platform.ScriptingBackend), out FileTemplate fileTemplate)) + { + throw new InvalidOperationException("Failed to parse template file for common props."); + } + + ITemplatePart rootPart = fileTemplate.Root; + TemplateReplacementSet rootReplacementSet = rootPart.CreateReplacementSet(); - string platformPropsText; if (inEditorConfiguration) { - platformPropsText = ProcessPlatformTemplate(platformTemplate, platform.Name, configuration, platform.BuildTarget, platform.TargetFramework, - platform.CommonPlatformReferences.Concat(platform.AdditionalInEditorReferences), platform.CommonPlatformDefines.Concat(platform.AdditionalInEditorDefines)); + ProcessPlatformTemplate(rootPart, rootReplacementSet, platform.Name, configuration, platform.BuildTarget, platform.TargetFramework, + platform.CommonPlatformReferences.Concat(platform.AdditionalInEditorReferences), + platform.CommonPlatformDefines.Concat(platform.AdditionalInEditorDefines)); } else { - platformPropsText = ProcessPlatformTemplate(platformTemplate, platform.Name, configuration, platform.BuildTarget, platform.TargetFramework, - platform.CommonPlatformReferences.Concat(platform.AdditionalPlayerReferences), platform.CommonPlatformDefines.Concat(platform.AdditionalPlayerDefines)); + ProcessPlatformTemplate(rootPart, rootReplacementSet, platform.Name, configuration, platform.BuildTarget, platform.TargetFramework, + platform.CommonPlatformReferences.Concat(platform.AdditionalPlayerReferences), + platform.CommonPlatformDefines.Concat(platform.AdditionalPlayerDefines)); } - File.WriteAllText(Path.Combine(projectOutputFolder, $"{platform.Name}.{configuration}.props"), platformPropsText); + fileTemplate.Write(Path.Combine(projectOutputFolder, $"{platform.Name}.{configuration}.props"), rootReplacementSet); } - private static string ProcessPlatformTemplate(string platformTemplate, string platformName, string configuration, BuildTarget buildTarget, TargetFramework targetFramework, IEnumerable references, IEnumerable defines, params HashSet[] priorToCheck) + private static void ProcessPlatformTemplate(ITemplatePart rootPart, TemplateReplacementSet rootReplacementSet, string platformName, string configuration, BuildTarget buildTarget, TargetFramework targetFramework, IEnumerable references, IEnumerable defines, params HashSet[] priorToCheck) { - if (Utilities.TryGetXMLTemplate(platformTemplate, "PLATFORM_COMMON_REFERENCE", out string platformCommonReferenceTemplate)) + ProcessReferences(buildTarget, references, out HashSet platformAssemblySearchPaths, out HashSet platformAssemblyReferencePaths, priorToCheck); + + string minUWPPlatform = uwpMinPlatformVersion; + if (string.IsNullOrWhiteSpace(minUWPPlatform) || new Version(minUWPPlatform) < DefaultMinUWPSDK) { - ProcessReferences(buildTarget, references, out HashSet platformAssemblySearchPaths, out HashSet platformAssemblyReferencePaths, priorToCheck); + minUWPPlatform = DefaultMinUWPSDK.ToString(); + } + + string[] versionParts = Application.unityVersion.Split('.'); + // This is a try replace because some may hardcode this value + rootPart.TryReplaceToken("TARGET_FRAMEWORK", rootReplacementSet, targetFramework.AsMSBuildString()); + rootPart.Tokens["PLATFORM_COMMON_DEFINE_CONSTANTS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", defines)); + rootPart.Tokens["PLATFORM_COMMON_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", platformAssemblySearchPaths)); + + // These are UWP specific, but they will be no-op if not needed + if (buildTarget == BuildTarget.WSAPlayer && configuration == "Player") + { string targetUWPPlatform = uwpTargetPlatformVersion; if (string.IsNullOrWhiteSpace(targetUWPPlatform)) { targetUWPPlatform = Utilities.GetUWPSDKs().Max().ToString(4); } + rootPart.TryReplaceToken("UWP_TARGET_PLATFORM_VERSION", rootReplacementSet, targetUWPPlatform); + rootPart.TryReplaceToken("UWP_MIN_PLATFORM_VERSION", rootReplacementSet, minUWPPlatform); + } - string minUWPPlatform = uwpMinPlatformVersion; - if (string.IsNullOrWhiteSpace(minUWPPlatform) || new Version(minUWPPlatform) < DefaultMinUWPSDK) - { - minUWPPlatform = DefaultMinUWPSDK.ToString(); - } - string[] versionParts = Application.unityVersion.Split('.'); - Dictionary platformTokens = new Dictionary() - { - {"", targetFramework.AsMSBuildString() }, - {"", string.Join(";", defines) }, - {"", string.Join(";", platformAssemblySearchPaths)}, - - // These are UWP specific, but they will be no-op if not needed - { "", targetUWPPlatform }, - { "", minUWPPlatform }, - - { "", versionParts[0] }, - { "", versionParts[1] } - }; - - platformTokens.Add(platformCommonReferenceTemplate, string.Join("\r\n", GetReferenceEntries(platformCommonReferenceTemplate, platformAssemblyReferencePaths))); + rootPart.Tokens["UNITY_MAJOR_VERSION"].AssignValue(rootReplacementSet, versionParts[0]); + rootPart.Tokens["UNITY_MINOR_VERSION"].AssignValue(rootReplacementSet, versionParts[1]); - return Utilities.ReplaceTokens(platformTemplate, platformTokens); - } - else + ITemplatePart platformCommonReferencePart = rootPart.Templates["PLATFORM_COMMON_REFERENCE"]; + foreach (string reference in platformAssemblyReferencePaths) { - Debug.LogError($"Invalid platform template format for '{platformName}' with configuration '{configuration}'"); - return platformTemplate; + TemplateReplacementSet replacementSet = platformCommonReferencePart.CreateReplacementSet(rootReplacementSet); + platformCommonReferencePart.Tokens["REFERENCE"].AssignValue(replacementSet, Path.GetFileNameWithoutExtension(reference)); + platformCommonReferencePart.Tokens["HINT_PATH"].AssignValue(replacementSet, reference); } } - public static IEnumerable GetReferenceEntries(string template, IEnumerable references) - { - return references.Select(t => Utilities.ReplaceTokens(template, new Dictionary() - { - { "##REFERENCE_TOKEN##", Path.GetFileNameWithoutExtension(t) }, - { "", t } - })); - } - private static void ProcessReferences(BuildTarget buildTarget, IEnumerable references, out HashSet searchPaths, out HashSet referenceNames, params HashSet[] priorToCheck) { searchPaths = new HashSet(); diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/PluginAssemblyInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/PluginAssemblyInfo.cs index 08983f3..7e4f60d 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/PluginAssemblyInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/PluginAssemblyInfo.cs @@ -43,6 +43,11 @@ public class PluginAssemblyInfo : ReferenceItemInfo /// public bool AutoReferenced { get; private set; } + /// + /// Gets the output path to the reference. + /// + public Uri ReferencePath { get; } + /// /// If the plugin has define constraints, then it will only be referenced if the platform/project defines at least one of these constraints. /// ! operator means that the specified plugin must not be included @@ -54,9 +59,10 @@ public class PluginAssemblyInfo : ReferenceItemInfo /// Creates a new instance of the . /// public PluginAssemblyInfo(UnityProjectInfo unityProjectInfo, Guid guid, string fullPath, PluginType type) - : base(unityProjectInfo, guid, new Uri(fullPath), Path.GetFileNameWithoutExtension(fullPath)) + : base(unityProjectInfo, guid, Path.GetFileNameWithoutExtension(fullPath)) { Type = type; + ReferencePath = new Uri(fullPath); if (Type == PluginType.Managed) { diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/ReferenceItemInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/ReferenceItemInfo.cs index 763cd6c..5431249 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/ReferenceItemInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/ReferenceItemInfo.cs @@ -23,11 +23,6 @@ public class ReferenceItemInfo /// public Guid Guid { get; } - /// - /// Gets the output path to the reference. - /// - public Uri ReferencePath { get; } - /// /// Gets name of the reference item. /// @@ -57,11 +52,10 @@ public class ReferenceItemInfo /// The unique Guid of this reference item. /// The output path to the reference item. /// The name of the reference. - protected ReferenceItemInfo(UnityProjectInfo unityProjectInfo, Guid guid, Uri referencePath, string name) + protected ReferenceItemInfo(UnityProjectInfo unityProjectInfo, Guid guid, string name) { UnityProjectInfo = unityProjectInfo; Guid = guid; - ReferencePath = referencePath; Name = name; } diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/SourceFileInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/SourceFileInfo.cs index c9cb01e..aacdf22 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/SourceFileInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/SourceFileInfo.cs @@ -3,6 +3,7 @@ using System; using System.IO; +using UnityEditor; namespace Microsoft.Build.Unity.ProjectGeneration { @@ -17,24 +18,12 @@ public class SourceFileInfo /// /// /// - public static SourceFileInfo Parse(FileInfo path, Type classType = null) - { - if (path.Extension != ".cs") - { - throw new ArgumentException($"Given file '{path.FullName}' is not a C# source file."); - } - else if (!path.Exists) - { - throw new ArgumentException($"Given file '{path.FullName}' does not exist."); - } - if (!Utilities.TryGetGuidForAsset(path, out Guid guid)) - { - throw new InvalidOperationException($"Couldn't get guid for source asset '{path.FullName}'."); - } + private readonly string assetDatabasePath; - return new SourceFileInfo(path, guid, Utilities.GetAssetLocation(path), classType); - } + private bool parsed = false; + private Guid guid; + private Type classType; /// /// Gets the file on disk. @@ -44,7 +33,18 @@ public static SourceFileInfo Parse(FileInfo path, Type classType = null) /// /// Gets the Asset Guid for this source file. /// - public Guid Guid { get; } + public Guid Guid + { + get + { + if (!parsed) + { + Parse(); + } + + return guid; + } + } /// /// Gets the asset location of this source file. @@ -54,14 +54,42 @@ public static SourceFileInfo Parse(FileInfo path, Type classType = null) /// /// Gets the class type of this source file. May be null, if the file was not inside the Unity project. /// - public Type ClassType { get; } + public Type ClassType + { + get + { + if (!parsed) + { + Parse(); + } + return classType; + } + } - private SourceFileInfo(FileInfo fileInfo, Guid guid, AssetLocation assetLocation, Type classType) + public SourceFileInfo(FileInfo fileInfo, AssetLocation assetLocation, string assetDatabasePath) { + this.assetDatabasePath = assetDatabasePath; + + if (fileInfo.Extension != ".cs") + { + throw new ArgumentException($"Given file '{fileInfo.FullName}' is not a C# source file."); + } + File = fileInfo; - Guid = guid; AssetLocation = assetLocation; - ClassType = classType; + } + + private void Parse() + { + if (!Guid.TryParse(AssetDatabase.AssetPathToGUID(assetDatabasePath), out guid) && !Utilities.TryGetGuidForAsset(File, out guid)) + { + throw new InvalidOperationException($"Couldn't get guid for source asset '{File.FullName}'."); + } + + MonoScript script = AssetDatabase.LoadAssetAtPath(File.FullName); + classType = script?.GetClass(); + + parsed = true; } } } diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates.meta new file mode 100644 index 0000000..42eb96b --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a68bc6ff8d195c43ab08dbf8c3a201c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/DelimitedStringSet.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/DelimitedStringSet.cs new file mode 100644 index 0000000..8cc034a --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/DelimitedStringSet.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System.Collections.Generic; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates +{ + /// + /// This class is a small optimization to avoid string Join operation when intending to store a set of values seperated by a delimiter. + /// + public struct DelimitedStringSet + { + /// + /// Delimiter to be applied in-between the values. + /// + public string Delimiter { get; } + + /// + /// The list of replacement values. + /// + public IEnumerable Items { get; } + + /// + /// Creates a new instance of the set by providing the delimiter and items. + /// + public DelimitedStringSet(string delimiter, IEnumerable items) + { + Delimiter = delimiter; + Items = items; + } + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/DelimitedStringSet.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/DelimitedStringSet.cs.meta new file mode 100644 index 0000000..c1b1f86 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/DelimitedStringSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 230ad67663caa2f409f0d1273abfa7cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/FileTemplate.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/FileTemplate.cs new file mode 100644 index 0000000..d3f75cf --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/FileTemplate.cs @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using Microsoft.Build.Unity.ProjectGeneration.Templates.Text; +using Microsoft.Build.Unity.ProjectGeneration.Templates.Xml; +using System; +using System.IO; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates +{ + /// + /// This is the base class for the types of template files used by the . + /// + public abstract class FileTemplate + { + private const string TemplateExtension = ".template"; + + /// + /// Attempts to parse the templtae file. + /// + /// The path to the template file. + /// The instance of the parsed template file, null if failed. + /// True if was able to parse succesfully. + public static bool TryParseTemplate(FileInfo path, out FileTemplate fileTemplate) + { + if (!(path?.Exists ?? throw new ArgumentNullException(nameof(path)))) + { + throw new FileNotFoundException("Can't parse template because the file is missing.", path.FullName); + } + + if (path.Extension != TemplateExtension) + { + throw new InvalidDataException($"The given file '{path.FullName}' is not a {TemplateExtension} file."); + } + + int indexOfTemplateExtensionPeriod = path.FullName.Length - TemplateExtension.Length; + int indexOfPreviousPeriod = path.FullName.LastIndexOf('.', indexOfTemplateExtensionPeriod - 1); + string templateExtension = path.FullName.Substring(indexOfPreviousPeriod, indexOfTemplateExtensionPeriod - indexOfPreviousPeriod); + + switch (templateExtension) + { + case ".csproj": + case ".props": + case ".targets": + fileTemplate = new XmlFileTemplate(path); + break; + case ".sln": + fileTemplate = new TextFileTemplate(path); + break; + default: + fileTemplate = null; + return false; + } + + fileTemplate.Parse(); + return true; + } + + protected readonly FileInfo templateFile; + + public ITemplatePart Root { get; protected set; } + + protected FileTemplate(FileInfo templateFile) + { + this.templateFile = templateFile; + } + + protected abstract void Parse(); + + public abstract void Write(string path, TemplateReplacementSet replacementSet); + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/FileTemplate.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/FileTemplate.cs.meta new file mode 100644 index 0000000..04b424c --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/FileTemplate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 06352b4bfa58a7e4f88899d7cb1bc275 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs new file mode 100644 index 0000000..97d7aff --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System.Collections.Generic; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates +{ + /// + /// This represents a template that has it's own sub-templates and replaceable tokens. + /// + public interface ITemplatePart + { + /// + /// A dictionary of tokens that can be replaced as part of this template. + /// + IReadOnlyDictionary Tokens { get; } + + /// + /// A dictionary of sub-templates that can be instanced as part of this template. + /// + IReadOnlyDictionary Templates { get; } + + /// + /// Creates a new replacement set for holding the replacement values, possibly given a parent replacement set (if this is a sub-template). + /// + /// Parent replacement set that may govern this one. + /// A new replacement set to use. + TemplateReplacementSet CreateReplacementSet(TemplateReplacementSet parentReplacementSet = default); + } + + /// + /// Just a helpful extension to the ITemplatePart. + /// + public static class Extensions + { + /// + /// Attempts to replace the token if it's available and returns true, otherwise returns false. + /// + /// The template on which to replace the token. + /// The name of the token. + /// The replacement set where to encode the value. + /// The value to encode. + /// True if was able to locate the token. + public static bool TryReplaceToken(this ITemplatePart templatePart, string tokenName, TemplateReplacementSet replacementSet, string value) + { + if (templatePart.Tokens.TryGetValue(tokenName, out ITemplateToken templateToken)) + { + templateToken.AssignValue(replacementSet, value); + return true; + } + + return false; + } + } +} +#endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs.meta new file mode 100644 index 0000000..29f2db9 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aee7080bae077c549b16deaf816f6090 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplateToken.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplateToken.cs new file mode 100644 index 0000000..46522d6 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplateToken.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System.Collections.Generic; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates +{ + /// + /// This represents a parsed token of a template that can be replaced with a value. + /// + public interface ITemplateToken + { + /// + /// Encodes the value in the replacement set for the current token. + /// + /// where the value should be stored. + /// The value to store. + void AssignValue(TemplateReplacementSet replacementSet, object value); + + /// + /// A helper to prepare for replacement in case some prep is needed for the token. + /// + /// + void PrepareForReplacement(TemplateReplacementSet replacementSet); + } + + /// + /// This helper class allows the template to contain multiple instances of the same token to be replaced. + /// + internal class MultipleTemplateToken : ITemplateToken + { + public List Tokens { get; } = new List(); + + public void AssignValue(TemplateReplacementSet replacementSet, object value) + { + Tokens.ForEach(t => t.AssignValue(replacementSet, value)); + } + + public void PrepareForReplacement(TemplateReplacementSet replacementSet) + { + Tokens.ForEach(t => t.PrepareForReplacement(replacementSet)); + } + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplateToken.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplateToken.cs.meta new file mode 100644 index 0000000..0694e1e --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplateToken.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3d8f1a6ddd4edf4cbece363f11552eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs similarity index 90% rename from Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs rename to Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs index e19be9d..79c87b1 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs @@ -11,7 +11,7 @@ using UnityEditor; using UnityEngine; -namespace Microsoft.Build.Unity.ProjectGeneration +namespace Microsoft.Build.Unity.ProjectGeneration.Templates { /// /// A helper class to manage (and locate) all the templates. @@ -59,7 +59,7 @@ public class TemplateFiles /// /// Gets the MSBuild Platform Props file (.props) template path. /// - public string PlatformPropsTemplatePath { get; } + public FileInfo PlatformPropsTemplatePath { get; } /// /// Gets the BuildProjects.proj MSBuild file template path. @@ -69,7 +69,7 @@ public class TemplateFiles /// /// Gets a list of specialized platform templates. /// - public IReadOnlyDictionary PlatformTemplates { get; } + public IReadOnlyDictionary PlatformTemplates { get; } /// /// Gets a list of meta files for plugins templates. @@ -104,11 +104,11 @@ private TemplateFiles() SDKProjectFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project", SDKProjectFileTemplateName)); SDKProjectPropsFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project Props", SDKProjectPropsFileTemplateName)); SDKProjectTargetsFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project Targets", SDKProjectTargetsFileTemplateName)); - PlatformPropsTemplatePath = GetExpectedTemplatesPath(fileNamesMaps, "Platform Props", PlatformPropsTemplateName); + PlatformPropsTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Platform Props", PlatformPropsTemplateName)); BuildProjectsTemplatePath = GetExpectedTemplatesPath(fileNamesMaps, "MSBuild Build Projects Proj", BuildProjectsTemplateName); // Get specific platforms - Dictionary platformTemplates = new Dictionary(); + Dictionary platformTemplates = new Dictionary(); Dictionary metaFileTemplates = new Dictionary(); HashSet toRemove = new HashSet(); @@ -116,7 +116,7 @@ private TemplateFiles() { if (Regex.IsMatch(pair.Key, SpecifcPlatformPropsTemplateRegex)) { - platformTemplates.Add(pair.Key, pair.Value); + platformTemplates.Add(pair.Key, new FileInfo(pair.Value)); toRemove.Add(pair.Key); } else @@ -149,7 +149,7 @@ private TemplateFiles() fileNamesMaps.Remove(item); } - PlatformTemplates = new ReadOnlyDictionary(platformTemplates); + PlatformTemplates = new ReadOnlyDictionary(platformTemplates); PluginMetaTemplatePaths = new ReadOnlyDictionary(metaFileTemplates); OtherFiles = new ReadOnlyCollection(fileNamesMaps.Values.ToList()); @@ -161,9 +161,9 @@ private TemplateFiles() /// The platform of the requested template. /// The configuration of the requested template. /// The absolute file path for the platform template to use. - public string GetTemplateFilePathForPlatform(string platform, string configuration, ScriptingBackend scriptingBackend) + public FileInfo GetTemplateFilePathForPlatform(string platform, string configuration, ScriptingBackend scriptingBackend) { - if (PlatformTemplates.TryGetValue($"{platform}.{configuration}.{scriptingBackend.ToString()}.props.template", out string templatePath) + if (PlatformTemplates.TryGetValue($"{platform}.{configuration}.{scriptingBackend.ToString()}.props.template", out FileInfo templatePath) || PlatformTemplates.TryGetValue($"{platform}.{configuration}.Any.props.template", out templatePath) || PlatformTemplates.TryGetValue($"{platform}.Configuration.Any.props.template", out templatePath)) { diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs.meta similarity index 100% rename from Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/TemplateFiles.cs.meta rename to Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs.meta diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs new file mode 100644 index 0000000..0c78412 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System; +using System.Collections.Generic; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates +{ + /// + /// This class is used to hold the values for token and template replacements that will be used when the template is written out. + /// This way the template structure can be reused multiple times. + /// + public class TemplateReplacementSet + { + /// + /// Internal helper to create a replacement set based on the parent replacement set and a given entry identifier. + /// + internal static TemplateReplacementSet Create(TemplateReplacementSet parentReplacementSet, Guid entryIdentifier) + { + if (parentReplacementSet == null) + { + return new TemplateReplacementSet(); + } + + TemplateReplacementSet toReturn = new TemplateReplacementSet(); + List templateInstances; + if (parentReplacementSet.ReplacementEntries.TryGetValue(entryIdentifier, out object list)) + { + templateInstances = (List)list; + } + else + { + templateInstances = new List(); + parentReplacementSet.ReplacementEntries[entryIdentifier] = templateInstances; + } + templateInstances.Add(toReturn); + return toReturn; + } + + /// + /// A dictionary of encoded values as replacement entries. + /// + public Dictionary ReplacementEntries { get; } = new Dictionary(); + + private TemplateReplacementSet() { } + } +} +#endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs.meta new file mode 100644 index 0000000..75d863e --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df9dad5702f3f1747b255a900cdd8c5e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text.meta new file mode 100644 index 0000000..d86fe0c --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a5adede17d10664da416c7051c0caa8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs new file mode 100644 index 0000000..ae863af --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs @@ -0,0 +1,151 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System; +using System.Collections.Generic; +using System.IO; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Text +{ + /// + /// This is the implementation of the simple text based file template. + /// + internal class TextFileTemplate : FileTemplate + { + private const string TemplateSuffix = "_TEMPLATE"; + private const string TemplateStartSuffix = "_TEMPLATE_START"; + private const string TokenSuffix = "_TOKEN"; + + internal TextFileTemplate(FileInfo templateFile) + : base(templateFile) + { + } + + protected override void Parse() + { + using (StreamReader reader = new StreamReader(templateFile.FullName)) + { + Root = ParseMultilineTemplate(reader, null); + } + } + + private void ParseLineForTokens(string line, List parts, Dictionary tokenMap) + { + int startOfPreviousPart = 0; + int nextIndexOfOpenBracket = 0; + while ((nextIndexOfOpenBracket = line.IndexOf('<', nextIndexOfOpenBracket)) > -1) + { + int i; + char lastC = '\0'; + for (i = nextIndexOfOpenBracket + 1; i < line.Length; i++) + { + lastC = line[i]; + if (lastC != '_' && !char.IsLetterOrDigit(lastC)) + { + break; + } + } + + if (lastC == '>') + { + string potentialToken = line.Substring(nextIndexOfOpenBracket + 1, i - nextIndexOfOpenBracket - 1); + if (potentialToken.EndsWith(TokenSuffix)) + { + string tokenName = potentialToken.Substring(0, potentialToken.Length - TokenSuffix.Length); + if (!tokenMap.TryGetValue(tokenName, out ITemplateToken token)) + { + token = new TextTemplateToken(); + tokenMap.Add(tokenName, token); + } + + parts.Add(line.Substring(startOfPreviousPart, nextIndexOfOpenBracket - startOfPreviousPart)); + parts.Add(token); + + startOfPreviousPart = i + 1; + } + } + + nextIndexOfOpenBracket = i; + } + + if (startOfPreviousPart < line.Length) + { + if (startOfPreviousPart == 0) + { + parts.Add(line); + } + else + { + parts.Add(line.Substring(startOfPreviousPart, line.Length - startOfPreviousPart)); + } + } + } + + private TextTemplatePart ParseInlineTemplate(string inlineTemplate) + { + List templateParts = new List(); + Dictionary subTokens = new Dictionary(); + + ParseLineForTokens(inlineTemplate, templateParts, subTokens); + return new TextTemplatePart(templateParts, subTokens, new Dictionary()); + } + + private TextTemplatePart ParseMultilineTemplate(StreamReader reader, string parentTemplateName = null) + { + List templateParts = new List(); + Dictionary subTemplates = new Dictionary(); + Dictionary subTokens = new Dictionary(); + string line; + while ((line = reader.ReadLine()) != null) + { + if (parentTemplateName != null && line.StartsWith($"#{parentTemplateName}_TEMPLATE_END")) + { + break; + } + else if (line[0] == '#') + { + // Possible start of an in-line template + int indexOfSpace = line.IndexOf(' '); + if (indexOfSpace > TemplateSuffix.Length && line.Substring(indexOfSpace - TemplateSuffix.Length, TemplateSuffix.Length) == TemplateSuffix) + { + // Got an in-line template here + string templateName = line.Substring(1, indexOfSpace - TemplateSuffix.Length - 1); + + TextTemplatePart template = ParseInlineTemplate(line.Substring(indexOfSpace + 1)); + subTemplates.Add(templateName, template); + templateParts.Add(template); + templateParts.Add(Environment.NewLine); + continue; + } + else if (line.EndsWith(TemplateStartSuffix)) + { + // Got a multiline template here + string templateName = line.Substring(1, line.Length - TemplateStartSuffix.Length - 1); + + TextTemplatePart template = ParseMultilineTemplate(reader, templateName); + subTemplates.Add(templateName, template); + templateParts.Add(template); + templateParts.Add(Environment.NewLine); + } + } + else + { + ParseLineForTokens(line, templateParts, subTokens); + } + + templateParts.Add(Environment.NewLine); + } + return new TextTemplatePart(templateParts, subTokens, subTemplates); + } + + public override void Write(string path, TemplateReplacementSet replacementSet) + { + using (StreamWriter writer = new StreamWriter(path)) + { + ((TextTemplatePart)Root).Write(writer, replacementSet); + } + } + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs.meta new file mode 100644 index 0000000..2070235 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 836a8b5f51bfdb641b1b57193be7bdf7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs new file mode 100644 index 0000000..d3122b6 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs @@ -0,0 +1,72 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Text +{ + /// + /// A simple text template part. + /// + internal class TextTemplatePart : ITemplatePart + { + private readonly Guid token = Guid.NewGuid(); + + private readonly List parts; + + /// + public IReadOnlyDictionary Tokens { get; } + + /// + public IReadOnlyDictionary Templates { get; } + + internal TextTemplatePart(List parts, IDictionary tokens, IDictionary templates) + { + this.parts = parts; + Tokens = new ReadOnlyDictionary(tokens); + Templates = new ReadOnlyDictionary(templates); + } + + /// + public TemplateReplacementSet CreateReplacementSet(TemplateReplacementSet parentReplacementSet = null) + { + return TemplateReplacementSet.Create(parentReplacementSet, token); + } + + internal void Write(StreamWriter writer, TemplateReplacementSet replacementSet) + { + if (parts.Count > 0) + { + foreach (object part in parts) + { + if (part is TextTemplatePart templatePart) + { + if (replacementSet.ReplacementEntries.TryGetValue(templatePart.token, out object value)) + { + List replacementSets = (List)value; + foreach (TemplateReplacementSet set in replacementSets) + { + templatePart.Write(writer, set); + } + } + } + else if (part is TextTemplateToken templateToken) + { + writer.Write(templateToken.GetValue(replacementSet)); + } + else + { + writer.Write(part); + } + } + + writer.WriteLine(); + } + } + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs.meta new file mode 100644 index 0000000..d5c362c --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6757c3839d62329409fa604f3b74ffe8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplateToken.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplateToken.cs new file mode 100644 index 0000000..dc7f175 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplateToken.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Text +{ + /// + /// A simple text template token. + /// + internal class TextTemplateToken : ITemplateToken + { + private readonly Guid token = Guid.NewGuid(); + + /// + public void AssignValue(TemplateReplacementSet replacementSet, object value) + { + replacementSet.ReplacementEntries[token] = value; + } + + /// + public void PrepareForReplacement(TemplateReplacementSet replacementSet) + { + // DO nothing + } + + internal object GetValue(TemplateReplacementSet replacementSet) + { + return replacementSet.ReplacementEntries[token]; + } + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplateToken.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplateToken.cs.meta new file mode 100644 index 0000000..6023194 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplateToken.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ec81e12f8432ad458f99c91986dbaa4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml.meta new file mode 100644 index 0000000..2db7905 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34f0a9be78aa94046b7acfab80fca4f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlAttributeTemplateToken.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlAttributeTemplateToken.cs new file mode 100644 index 0000000..d1f89b1 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlAttributeTemplateToken.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System; +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Xml +{ + /// + /// Represents a token that is part of a Xml attribute. + /// + internal class XmlAttributeTemplateToken : XAttribute, ITemplateToken + { + private readonly Guid tokenGuid; + + private readonly string attributeValue; + private readonly string tokenToReplace; + + internal XmlAttributeTemplateToken(Guid tokenGuid, XName attributeName, string attributeValue, string tokenToReplace) + : base(attributeName, string.Empty) + { + this.tokenGuid = tokenGuid; + this.attributeValue = attributeValue; + this.tokenToReplace = tokenToReplace; + } + + public void AssignValue(TemplateReplacementSet replacementSet, object value) + { + string toUseForReplace; + if (replacementSet.ReplacementEntries.TryGetValue(tokenGuid, out object obj)) + { + toUseForReplace = (string)obj; + } + else + { + toUseForReplace = attributeValue; + } + + if (value is string strValue) + { + replacementSet.ReplacementEntries[tokenGuid] = toUseForReplace.Replace(tokenToReplace, strValue); + } + else if (value is IEnumerable valueSet) + { + replacementSet.ReplacementEntries[tokenGuid] = toUseForReplace.Replace(tokenToReplace, string.Join(string.Empty, valueSet)); + } + else if (value is DelimitedStringSet delimitedStringSet) + { + replacementSet.ReplacementEntries[tokenGuid] = toUseForReplace.Replace(tokenToReplace, string.Join(delimitedStringSet.Delimiter, delimitedStringSet.Items)); + } + else + { + throw new InvalidCastException($"Can't treat {value} as string or IEnumerable"); + } + } + + public void PrepareForReplacement(TemplateReplacementSet replacementSet) + { + SetValue(replacementSet.ReplacementEntries[tokenGuid]); + } + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlAttributeTemplateToken.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlAttributeTemplateToken.cs.meta new file mode 100644 index 0000000..748aefe --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlAttributeTemplateToken.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8c381156d85ce14f99c7adf9e0597a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs new file mode 100644 index 0000000..3424ff4 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System; +using System.Collections.Generic; +using System.Xml; +using System.Xml.Linq; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Xml +{ + /// + /// This token is encoded as a comment that should be replaced. + /// + internal class XmlCommentTemplateToken : XProcessingInstruction, ITemplateToken + { + private readonly Guid token = Guid.NewGuid(); + + internal XmlCommentTemplateToken(string commentValue) + : base("somename", commentValue) + { + } + + public override void WriteTo(XmlWriter writer) + { + XmlTemplateWriter xmlTemplateWriter = (XmlTemplateWriter)writer; + object value = xmlTemplateWriter.ReplacementSet.ReplacementEntries[token]; + if (value is string stringValue) + { + writer.WriteRaw(stringValue); + } + else if (value is IEnumerable valueSet) + { + foreach (string item in valueSet) + { + writer.WriteRaw(item); + } + } + else if (value is DelimitedStringSet delimitedStringSet) + { + bool firstWritten = false; + foreach (string item in delimitedStringSet.Items) + { + if (firstWritten) + { + writer.WriteRaw(delimitedStringSet.Delimiter); + } + + writer.WriteRaw(item); + firstWritten = true; + } + } + else + { + throw new InvalidCastException($"Can't treat {value} as string or IEnumerable"); + } + } + + public void AssignValue(TemplateReplacementSet replacementSet, object value) + { + replacementSet.ReplacementEntries[token] = value; + } + + public void PrepareForReplacement(TemplateReplacementSet replacementSet) + { + // Do nothing + } + } +} +#endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs.meta new file mode 100644 index 0000000..0cde8ce --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be9dce52c61e84042a7536880b819267 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs new file mode 100644 index 0000000..b72bff0 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System.IO; +using System.Xml; +using System.Xml.Linq; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Xml +{ + /// + /// Represents a template file that is Xml based. + /// + internal class XmlFileTemplate : FileTemplate + { + private XDocument document; + private XMLTemplatePart rootPart; + + public XmlFileTemplate(FileInfo templateFile) : base(templateFile) + { + } + + protected override void Parse() + { + document = XDocument.Load(templateFile.FullName); + + rootPart = new XMLTemplatePart(document.Root); + rootPart.Parse(); + Root = rootPart; + } + + public override void Write(string path, TemplateReplacementSet replacementSet) + { + using (StreamWriter writer = new StreamWriter(path)) + using (XmlTemplateWriter xmlWriter = new XmlTemplateWriter(writer, replacementSet) { Formatting = Formatting.Indented, IndentChar = ' ', Indentation = 4, Namespaces = false }) + { + rootPart.Write(xmlWriter); + } + } + } +} +#endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs.meta new file mode 100644 index 0000000..a453886 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bdf418e8467ee18469b64a949256a17d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplatePart.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplatePart.cs new file mode 100644 index 0000000..4486190 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplatePart.cs @@ -0,0 +1,279 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Xml; +using System.Xml.Linq; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Xml +{ + /// + /// An Xml based implementation of a template part. + /// + internal class XMLTemplatePart : XProcessingInstruction, ITemplatePart + { + private readonly Guid token = Guid.NewGuid(); + + private const string commentTokenSuffixKeyword = "_TOKEN"; + private const string commentTemplateStartSuffixKeyword = "_TEMPLATE_START"; + private const string commentTempalteEndSuffixKeyword = "_TEMPLATE_END"; + + private readonly Dictionary tokens = new Dictionary(); + private readonly Dictionary templates = new Dictionary(); + + private readonly XElement element; + + public IReadOnlyDictionary Tokens { get; } + + public IReadOnlyDictionary Templates { get; } + + + internal XMLTemplatePart(XElement element) + : base("templatepart", string.Empty) + { + Tokens = new ReadOnlyDictionary(tokens); + Templates = new ReadOnlyDictionary(templates); + this.element = new XElement(element); + } + + public void Parse() + { + ParseElement(element); + } + + public TemplateReplacementSet CreateReplacementSet(TemplateReplacementSet parentReplacementSet = null) + { + return TemplateReplacementSet.Create(parentReplacementSet, token); + } + + public override void WriteTo(XmlWriter writer) + { + XmlTemplateWriter parentWriter = ((XmlTemplateWriter)writer); + TemplateReplacementSet parentReplacementSet = parentWriter.ReplacementSet; + // Don't dispose + if (parentReplacementSet.ReplacementEntries.TryGetValue(token, out object value)) + { + List replacementSets = (List)value; + foreach (TemplateReplacementSet replacementSet in replacementSets) + { + parentWriter.ReplacementSet = replacementSet; + Write(parentWriter); + } + } + parentWriter.ReplacementSet = parentReplacementSet; + } + + public void Write(XmlTemplateWriter xmlTemplateWriter) + { + foreach (KeyValuePair pair in Tokens) + { + pair.Value.PrepareForReplacement(xmlTemplateWriter.ReplacementSet); + } + element.WriteTo(xmlTemplateWriter); + } + + private bool TryParseAttributeValueForTokens(XName attributeName, string value, out XmlAttributeTemplateToken attributeToken) + { + attributeToken = null; + + int nextTokenSeperator = value.IndexOf("##"); + if (nextTokenSeperator == -1) + { + return false; + + } + + Guid tokenGuid = Guid.NewGuid(); + int previousTokenSeperator = 0; + while (nextTokenSeperator != -1) + { + // We have potential token, if we don't return false + previousTokenSeperator = nextTokenSeperator + 2; + if (previousTokenSeperator >= value.Length) + { + return false; + } + + nextTokenSeperator = value.IndexOf("##", previousTokenSeperator); + if (nextTokenSeperator == -1) + { + return false; + } + + string potentialToken = value.Substring(previousTokenSeperator, nextTokenSeperator - previousTokenSeperator); + if (potentialToken.EndsWith(commentTokenSuffixKeyword)) + { + string token = potentialToken.Substring(0, potentialToken.Length - commentTokenSuffixKeyword.Length); + // We only really need to return 1, even if multiple are created, this will all properly be handled + attributeToken = new XmlAttributeTemplateToken(tokenGuid, attributeName, value, $"##{potentialToken}##"); + AddReplacementToken(token, attributeToken); + } + + previousTokenSeperator = nextTokenSeperator + 2; + nextTokenSeperator = previousTokenSeperator >= value.Length ? -1 : value.IndexOf("##", previousTokenSeperator); + } + if (attributeToken != null) + { + return true; + } + else + { + return false; + } + } + + private void ParseElement(XElement element) + { + // Scan for comments + // For each token comment, add it to token collection + // For each start of template, next node is the template + // - There should only be one between start and end of a template + // Then also check the attributes for token replacements + + bool atleastOneReplacement = false; + List attributes = new List(); + foreach (XAttribute attribute in element.Attributes()) + { + if (TryParseAttributeValueForTokens(attribute.Name, attribute.Value, out XmlAttributeTemplateToken toReplace)) + { + attributes.Add(toReplace); + + atleastOneReplacement = true; + } + else + { + attributes.Add(attribute); + } + } + + if (atleastOneReplacement) + { + element.ReplaceAttributes(attributes); + } + + List replacementActions = new List(); + string templateStartKey = null; + bool seenTemplateBody = false; + foreach (XNode node in element.Nodes()) + { + if (node is XComment comment) + { + switch (GetTokenType(comment, out string tokenKey)) + { + case TokenType.ReplacementToken: + XmlCommentTemplateToken xmlCommentTemplateToken = new XmlCommentTemplateToken(comment.Value); + AddReplacementToken(tokenKey, xmlCommentTemplateToken); + replacementActions.Add(() => comment.ReplaceWith(xmlCommentTemplateToken)); + break; + case TokenType.TemplateStart: + templateStartKey = tokenKey; + seenTemplateBody = false; + break; + case TokenType.TemplateEnd: + if (templateStartKey == null) + { + throw new InvalidOperationException($"We have template end '{tokenKey}' without equivalent start."); + } + else if (!Equals(templateStartKey, tokenKey)) + { + throw new InvalidOperationException($"We have template end '{tokenKey}' but the template start was different '{templateStartKey}'."); + } + else if (!seenTemplateBody) + { + throw new InvalidOperationException($"We have template '{tokenKey}' without a body."); + } + else + { + templateStartKey = null; + seenTemplateBody = false; + } + break; + } + } + else if (node is XElement childElement) + { + if (templateStartKey != null) + { + if (seenTemplateBody) + { + throw new InvalidOperationException($"Template '{templateStartKey}' can only have one body node."); + } + else + { + XMLTemplatePart templatePart = new XMLTemplatePart(childElement); + templatePart.Parse(); + templates.Add(templateStartKey, templatePart); + replacementActions.Add(() => childElement.ReplaceWith(templatePart)); + seenTemplateBody = true; + } + } + else + { + ParseElement(childElement); + } + } + } + + replacementActions.ForEach(t => t()); + } + + private void AddReplacementToken(string tokenKey, ITemplateToken token) + { + if (tokens.TryGetValue(tokenKey, out ITemplateToken existingToken)) + { + if (!(existingToken is MultipleTemplateToken multipleTemplateToken)) + { + multipleTemplateToken = new MultipleTemplateToken(); + multipleTemplateToken.Tokens.Add(existingToken); + + tokens[tokenKey] = multipleTemplateToken; + } + + multipleTemplateToken.Tokens.Add(token); + } + else + { + tokens[tokenKey] = token; + } + } + + private TokenType GetTokenType(XComment comment, out string tokenKey) + { + string contents = comment.Value.Trim(); + if (contents.EndsWith(commentTokenSuffixKeyword)) + { + tokenKey = contents.Substring(0, contents.Length - commentTokenSuffixKeyword.Length); + return TokenType.ReplacementToken; + } + + if (contents.EndsWith(commentTemplateStartSuffixKeyword)) + { + tokenKey = contents.Substring(0, contents.Length - commentTemplateStartSuffixKeyword.Length); + return TokenType.TemplateStart; + } + + if (contents.EndsWith(commentTempalteEndSuffixKeyword)) + { + tokenKey = contents.Substring(0, contents.Length - commentTempalteEndSuffixKeyword.Length); + return TokenType.TemplateEnd; + } + + tokenKey = null; + return TokenType.None; + } + + private enum TokenType + { + None, + ReplacementToken, + TemplateStart, + TemplateEnd + } + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplatePart.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplatePart.cs.meta new file mode 100644 index 0000000..631c9cd --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplatePart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dcdc5def72f17d541986fe9ae3d103d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs new file mode 100644 index 0000000..df1763b --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if UNITY_EDITOR +using System.IO; +using System.Xml; + +namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Xml +{ + /// + /// Helper XmlWriter class for the template. + /// + internal class XmlTemplateWriter : XmlTextWriter + { + public TemplateReplacementSet ReplacementSet { get; set; } + + public TextWriter Writer { get; } + + internal XmlTemplateWriter(TextWriter w, TemplateReplacementSet replacementSet) : base(w) + { + Writer = w; + ReplacementSet = replacementSet; + } + } +} +#endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs.meta new file mode 100644 index 0000000..660928a --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d1d1c6ba243b4f43a8602eec3ad7d14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs index 5d3635b..0c81d37 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs @@ -46,7 +46,7 @@ public class UnityProjectInfo /// public IReadOnlyCollection Plugins { get; } - public UnityProjectInfo(IEnumerable availablePlatforms, string projectOutputPath) + public UnityProjectInfo(IEnumerable availablePlatforms) { AvailablePlatforms = availablePlatforms; @@ -67,10 +67,10 @@ public UnityProjectInfo(IEnumerable availablePlatforms, } } - CSProjects = new ReadOnlyDictionary(CreateUnityProjects(projectOutputPath)); + CSProjects = new ReadOnlyDictionary(CreateUnityProjects()); } - private Dictionary CreateUnityProjects(string projectOutputPath) + private Dictionary CreateUnityProjects() { // Not all of these will be converted to C# objects, only the ones found to be referenced Dictionary asmDefInfoMap = new Dictionary(); @@ -95,6 +95,13 @@ private Dictionary CreateUnityProjects(string projectOutp } } + Dictionary packageCacheVersionedMap = new Dictionary(); + foreach (string directory in Directory.GetDirectories(Utilities.PackageLibraryCachePath)) + { + string directoryName = Path.GetFileName(directory); + packageCacheVersionedMap.Add(directoryName.Split('@')[0], directoryName); + } + Dictionary unityAssemblies = CompilationPipeline.GetAssemblies().ToDictionary(t => t.name); Dictionary projectsMap = new Dictionary(); Queue projectsToProcess = new Queue(); @@ -135,14 +142,14 @@ private Dictionary CreateUnityProjects(string projectOutp if (!projectsMap.ContainsKey(projectKey)) { - GetProjectInfo(projectsMap, asmDefInfoMap, builtInPackagesWithoutSource, projectKey, projectOutputPath); + GetProjectInfo(projectsMap, asmDefInfoMap, builtInPackagesWithoutSource, projectKey); } } return projectsMap; } - private CSProjectInfo GetProjectInfo(Dictionary projectsMap, Dictionary asmDefInfoMap, HashSet builtInPackagesWithoutSource, string projectKey, string projectOutputPath) + private CSProjectInfo GetProjectInfo(Dictionary projectsMap, Dictionary asmDefInfoMap, HashSet builtInPackagesWithoutSource, string projectKey) { if (projectKey.StartsWith("GUID:")) { @@ -160,7 +167,7 @@ private CSProjectInfo GetProjectInfo(Dictionary projectsM return null; } - CSProjectInfo toReturn = new CSProjectInfo(this, assemblyDefinitionInfo, projectOutputPath); + CSProjectInfo toReturn = new CSProjectInfo(this, assemblyDefinitionInfo); projectsMap.Add(projectKey, toReturn); if (!assemblyDefinitionInfo.BuiltInPackage) @@ -188,7 +195,7 @@ private CSProjectInfo GetProjectInfo(Dictionary projectsM continue; } - CSProjectInfo dependencyToAdd = GetProjectInfo(projectsMap, asmDefInfoMap, builtInPackagesWithoutSource, reference, projectOutputPath); + CSProjectInfo dependencyToAdd = GetProjectInfo(projectsMap, asmDefInfoMap, builtInPackagesWithoutSource, reference); if (dependencyToAdd != null) { toReturn.AddDependency(dependencyToAdd); @@ -216,7 +223,7 @@ private List ScanForPluginDLLs() toReturn.Add(toAdd); } - foreach (string packageDllPath in Directory.GetFiles(Utilities.PackagesCopyPath, "*.dll", SearchOption.AllDirectories)) + foreach (string packageDllPath in Directory.GetFiles(Utilities.PackageLibraryCachePath, "*.dll", SearchOption.AllDirectories)) { string metaPath = packageDllPath + ".meta"; diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs index 51844aa..e6452ef 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs @@ -33,7 +33,7 @@ public enum AssetLocation /// /// Inside the copy of the PackagesCache folder of the Unity project. /// - PackageCopy, + PackageLibraryCache, /// /// Inside the Packages folder shipped with the Unity version. @@ -52,18 +52,21 @@ public enum AssetLocation public static class Utilities { private const string AssetsFolderName = "Assets"; - private const string PackagesFolderName = "Packages"; + public const string PackagesFolderName = "Packages"; + private const string PackagesCacheFolderName = "PackageCache"; private const string MSBuildFolderName = "MSBuild"; - public const string PackagesCopyFolderName = "PackagesCopy"; + private const string MSBuildProjectsFolderName = "Projects"; private const string BuiltInPackagesRelativePath = @"Data\Resources\PackageManager\BuiltInPackages"; - public static string ProjectPath { get; } = Application.dataPath.Substring(0, Application.dataPath.Length - AssetsFolderName.Length); + public static string ProjectPath { get; } = Path.GetFullPath(Application.dataPath.Substring(0, Application.dataPath.Length - AssetsFolderName.Length)); public static string MSBuildOutputFolder { get; } = GetNormalizedPath(ProjectPath + MSBuildFolderName, true); - public static string PackagesCopyPath { get; } = Path.Combine(MSBuildOutputFolder, PackagesCopyFolderName); + public static string MSBuildProjectFolder { get; } = Path.Combine(MSBuildOutputFolder, MSBuildProjectsFolderName); + public static string PackageLibraryCachePath { get; } = Path.Combine(ProjectPath, "Library", PackagesCacheFolderName); + public const string MetaFileGuidRegex = @"guid:\s*([0-9a-fA-F]{32})"; - private static readonly string packagesPath; + public static string PackagesPath { get; } = Path.Combine(ProjectPath, PackagesFolderName); public static string AssetPath { get; } @@ -72,7 +75,6 @@ public static class Utilities static Utilities() { AssetPath = Path.GetFullPath(Application.dataPath); - packagesPath = Path.GetFullPath(ProjectPath + PackagesFolderName); BuiltInPackagesPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(EditorApplication.applicationPath), BuiltInPackagesRelativePath)); } @@ -105,7 +107,7 @@ public static string GetFullPathFromPackagesRelative(string path) return fullPathInPackages; } - return Path.GetFullPath(Path.Combine(MSBuildOutputFolder, PackagesCopyFolderName + path.Substring(PackagesFolderName.Length))); + return fullPathInPackages;// Path.GetFullPath(PackagesCopyPath + path.Substring(PackagesFolderName.Length)); } throw new InvalidOperationException("Not a path known to be relative to project's Package folder."); @@ -165,13 +167,13 @@ public static AssetLocation GetAssetLocation(FileInfo assetFile) { return AssetLocation.Project; } - else if (absolutePath.Contains(packagesPath) && assetFile.Exists) + else if (absolutePath.Contains(PackagesPath) && assetFile.Exists) { return AssetLocation.Package; } - else if (absolutePath.Contains(packagesPath) || absolutePath.Contains(PackagesCopyPath)) + else if (absolutePath.Contains(PackagesPath) || absolutePath.Contains(PackageLibraryCachePath)) { - return AssetLocation.PackageCopy; + return AssetLocation.PackageLibraryCache; } else if (absolutePath.Contains(BuiltInPackagesPath)) { @@ -179,7 +181,6 @@ public static AssetLocation GetAssetLocation(FileInfo assetFile) } else { - Debug.LogWarning($"Unknown asset location for '{absolutePath}', marking as external."); return AssetLocation.External; } } @@ -216,38 +217,11 @@ public static string GetAssetsRelativePathFrom(string absolutePath) throw new ArgumentException(nameof(absolutePath), $"Absolute path '{absolutePath}' is not a Unity Assets relative path ('{AssetPath}')"); } - /// - /// Get a path relative to the Packages folder from the absolute path, uses PackagesOutput folder. - /// - public static string GetPackagesRelativePathFrom(string absolutePath) - { - absolutePath = Path.GetFullPath(absolutePath); - - if (absolutePath.Contains(packagesPath)) - { - if (File.Exists(absolutePath) || Directory.Exists(absolutePath)) - { - return absolutePath.Replace(packagesPath, PackagesFolderName); - } - - return absolutePath.Replace(packagesPath, PackagesCopyFolderName); - } - else if (absolutePath.Contains(PackagesCopyPath)) - { - return absolutePath.Replace(PackagesCopyPath, PackagesCopyFolderName); - } - - throw new ArgumentException(nameof(absolutePath), $"Absolute path '{absolutePath}' is not a Unity Project Packages relative path ('{packagesPath}')"); - } - /// /// Gets a relative path between two absolute paths. /// public static string GetRelativePath(string thisAbsolute, string thatAbsolute) { - thisAbsolute = Path.GetFullPath(thisAbsolute); - thatAbsolute = Path.GetFullPath(thatAbsolute); - if (!thisAbsolute.EndsWith("\\")) { thisAbsolute = thisAbsolute + "\\"; From 6aefad5b23e613b3d8741759e06479c42fa8287a Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Mon, 4 Nov 2019 15:01:58 -0800 Subject: [PATCH 05/19] Replace Source File references with Folder Includes (#43) * Misc cleanup, also refactor a bit more csprojectinfo and exporter relationship * Rewrote the template process for XML, haven't replaced existing process yet. * Various perf improvements, also removed need to create PackageCopy * Implemented TextFileTemplate * A few more minor changes * A bit of cleanup * Added support for including on soure file locations and excluding on source file locations * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs Co-Authored-By: Kurtis * Removing commented code --- .../Assets/Component2/Nested.meta | 8 ++ .../Assets/Component2/Nested/Nested.asmdef | 3 + .../Component2/Nested/Nested.asmdef.meta | 7 ++ .../Assets/Component2/Nested/NestedType.cs | 18 ++++ .../Component2/Nested/NestedType.cs.meta | 11 +++ .../SDKProjectTemplate.g.props.template | 99 ++++++++++++------- .../Scripts/AssemblyDefinitionInfo.cs | 3 +- .../Exporters/TemplatedProjectExporter.cs | 44 +-------- .../Scripts/UnityProjectInfo.cs | 42 ++++++++ 9 files changed, 159 insertions(+), 76 deletions(-) create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs.meta diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested.meta new file mode 100644 index 0000000..f1226ca --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68c737313f5db654095c169c7dfbfc76 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef new file mode 100644 index 0000000..3812c74 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef @@ -0,0 +1,3 @@ +{ + "name": "Nested" +} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef.meta new file mode 100644 index 0000000..949a35c --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 36f8303a8a5d1bd4b99ef1e7ebe338fb +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs new file mode 100644 index 0000000..6de0b37 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Nested : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs.meta new file mode 100644 index 0000000..df236b3 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f7d027e7a445d3489ec8ff1ce730e44 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template index f4842b7..73b7837 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template @@ -1,16 +1,29 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + + false ..\Output\ $(MSBuildThisFileDirectory)$(RelativeBuildFolder) false @@ -21,28 +34,32 @@ $(MSBuildThisFileDirectory)..\Publish\ - + - + + + - + InEditor - + $(Platform) - + $(Configuration) - + InEditor;Player - + + + - + Release @@ -58,7 +75,7 @@ $(BuildFolder)bin\ $(BaseIntermediateOutputPath)$(UnityConfiguration)\$(UnityPlatform)\ - + $(BuildFolder)$(UnityConfiguration)\$(UnityPlatform)\ @@ -71,7 +88,7 @@ - + {CandidateAssemblyFiles};{HintPathFromItem};{RawFileName}; - + - $(AssemblySearchPaths); + + $(AssemblySearchPaths); + true - + - $(AssemblySearchPaths); + + $(AssemblySearchPaths); + - + $(DefaultItemExcludes)obj;bin;*.asmdef;*.asmdef.meta;*.csmap; false - + - + All - - - + + + false - + + + - + + + + + + + + - - - - + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs index d4c7671..cd3c32d 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using UnityEditor; using UnityEditor.Compilation; using UnityEngine; @@ -141,6 +140,8 @@ public static AssemblyDefinitionInfo Parse(FileInfo file, UnityProjectInfo unity /// public HashSet PrecompiledAssemblyReferences { get; private set; } + public HashSet NestedAssemblyDefinitionFiles { get; } = new HashSet(); + /// /// After it's parsed from JSON, this method should be invoked to validate some of the values and set additional properties. /// diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs index 6932e34..ff8f095 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs @@ -88,20 +88,16 @@ private bool TryExportPropsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo TemplateReplacementSet rootReplacementSet = rootTemplatePart.CreateReplacementSet(); ITemplatePart projectReferenceSetTemplatePart = rootTemplatePart.Templates["PROJECT_REFERENCE_SET"]; - ITemplatePart sourceIncludeTemplatePart = rootTemplatePart.Templates["SOURCE_INCLUDE"]; + ITemplatePart sourceExcludeTemplatePart = rootTemplatePart.Templates["SOURCE_EXCLUDE"]; string projectPath = GetProjectPath(projectInfo).FullName; - //Dictionary sourceGuidToClassName = new Dictionary(); - foreach (SourceFileInfo source in projectInfo.AssemblyDefinitionInfo.GetSources()) + foreach (AssemblyDefinitionInfo nestedAsmdef in projectInfo.AssemblyDefinitionInfo.NestedAssemblyDefinitionFiles) { - //sourceGuidToClassName.Add(source.Guid, source.ClassType?.FullName); - ProcessSourceFile(projectInfo, source, sourceIncludeTemplatePart, rootReplacementSet); + TemplateReplacementSet replacementSet = sourceExcludeTemplatePart.CreateReplacementSet(rootReplacementSet); + sourceExcludeTemplatePart.Tokens["EXCLUDE_DIRECTORY_PATH"].AssignValue(replacementSet, nestedAsmdef.Directory.FullName); } - // For now don't create .csmaps; not used yet anyways - //File.WriteAllLines(Path.Combine(propsOutputFolder.FullName, $"{projectInfo.Guid.ToString()}.csmap"), sourceGuidToClassName.Select(t => $"{t.Key.ToString("N")}:{t.Value}")); - HashSet inEditorSearchPaths = new HashSet(), playerSearchPaths = new HashSet(); CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplatePart, rootReplacementSet, inEditorSearchPaths, true); CreateProjectReferencesSet(projectInfo, projectReferenceSetTemplatePart, rootReplacementSet, playerSearchPaths, false); @@ -117,6 +113,7 @@ private bool TryExportPropsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo rootTemplatePart.Tokens["INEDITOR_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", inEditorSearchPaths)); rootTemplatePart.Tokens["PLAYER_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", playerSearchPaths)); rootTemplatePart.Tokens["PLATFORM_PROPS_FOLDER_PATH"].AssignValue(rootReplacementSet, propsOutputFolder.FullName); + rootTemplatePart.Tokens["PROJECT_DIRECTORY_PATH"].AssignValue(rootReplacementSet, projectInfo.AssemblyDefinitionInfo.Directory.FullName); propsFileTemplate.Write(projectPath.Replace("csproj", "g.props"), rootReplacementSet); return true; @@ -241,37 +238,6 @@ void ProcessMappings(Guid guid, string configuration, IReadOnlyDictionary platforms) { foreach (KeyValuePair platform in platforms) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs index 0c81d37..ce69709 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs @@ -74,6 +74,8 @@ private Dictionary CreateUnityProjects() { // Not all of these will be converted to C# objects, only the ones found to be referenced Dictionary asmDefInfoMap = new Dictionary(); + SortedSet asmDefDirectoriesSorted = new SortedSet(Comparer.Create((a, b) => a.Directory.FullName.CompareTo(b.Directory.FullName))); + HashSet builtInPackagesWithoutSource = new HashSet(); // Parse the builtInPackagesFirst @@ -91,6 +93,7 @@ private Dictionary CreateUnityProjects() foreach (FileInfo fileInfo in asmDefFiles) { AssemblyDefinitionInfo assemblyDefinitionInfo = AssemblyDefinitionInfo.Parse(fileInfo, this, null, true); + asmDefDirectoriesSorted.Add(assemblyDefinitionInfo); asmDefInfoMap.Add(Path.GetFileNameWithoutExtension(fileInfo.Name), assemblyDefinitionInfo); } } @@ -132,10 +135,14 @@ private Dictionary CreateUnityProjects() } } + asmDefDirectoriesSorted.Add(assemblyDefinitionInfo); asmDefInfoMap.Add(pair.Key, assemblyDefinitionInfo); } } + int index = 0; + ProcessSortedAsmDef(asmDefDirectoriesSorted.ToArray(), ref index, (uri) => true, (a) => { }); + while (projectsToProcess.Count > 0) { string projectKey = projectsToProcess.Dequeue(); @@ -149,6 +156,41 @@ private Dictionary CreateUnityProjects() return projectsMap; } + private void ProcessSortedAsmDef(AssemblyDefinitionInfo[] set, ref int currentIndex, Func childOfParentFunc, Action addAsChild) + { + Uri GetUri(DirectoryInfo d) => d.FullName.EndsWith("\\") ? new Uri(d.FullName) : new Uri(d.FullName + "\\"); + + for (; currentIndex < set.Length;) + { + AssemblyDefinitionInfo current = set[currentIndex]; + addAsChild(current); + + if (currentIndex + 1 == set.Length) + { + return; + } + + currentIndex++; + + AssemblyDefinitionInfo next = set[currentIndex]; + + Uri potentialBase = GetUri(current.Directory); + Uri potentialChild = GetUri(next.Directory); + if (!childOfParentFunc(potentialChild)) + { + return; + } + else if (potentialBase.IsBaseOf(potentialChild)) + { + ProcessSortedAsmDef(set, ref currentIndex, potentialBase.IsBaseOf, (a) => current.NestedAssemblyDefinitionFiles.Add(a)); + if (!childOfParentFunc(potentialChild)) + { + return; + } + } + } + } + private CSProjectInfo GetProjectInfo(Dictionary projectsMap, Dictionary asmDefInfoMap, HashSet builtInPackagesWithoutSource, string projectKey) { if (projectKey.StartsWith("GUID:")) From 7ce9e7b61d67d6a0b94459723a8733ae3e169697 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Tue, 5 Nov 2019 13:40:34 -0800 Subject: [PATCH 06/19] Update Generated Project Structure (#45) * Misc cleanup, also refactor a bit more csprojectinfo and exporter relationship * Rewrote the template process for XML, haven't replaced existing process yet. * Various perf improvements, also removed need to create PackageCopy * Implemented TextFileTemplate * A few more minor changes * A bit of cleanup * Added support for including on soure file locations and excluding on source file locations * First iteration of updating project structure * Updated the structure, and ensured standard scenarios still work * Added an example of external nuget package reference * Added the NuGet dependency example that has minimum requirement of MSBuildForUnity * Adding settings json file * Fixed an error * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateReplacementSet.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlCommentTemplateToken.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/ITemplatePart.cs Co-Authored-By: Kurtis * Update Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs Co-Authored-By: Kurtis * Updating templates with comments * Minor updates --- Samples/ExternalDependencies/NuGet.config | 2 +- .../Project.Unity/.gitignore | 4 +- .../Assets/NewtonsoftDependency.meta | 8 + .../Assets/NewtonsoftDependency/.gitignore | 4 + .../NewtonsoftDependency.csproj | 35 +++ .../NewtonsoftDependency.csproj.meta | 12 + .../ProjectSettings/ProjectSettings.asset | 1 + .../BuildProjects.proj.template | 4 +- .../MSBuildForUnity.Common.props.template | 7 + ...MSBuildForUnity.Common.props.template.meta | 7 + .../SDKProjectTemplate.csproj.template | 24 +- .../SDKProjectTemplate.g.csproj.template | 18 ++ .../SDKProjectTemplate.g.csproj.template.meta | 7 + .../SDKProjectTemplate.g.props.template | 60 ++-- .../SDKProjectTemplate.g.targets.template | 6 + .../SolutionTemplate.sln.template | 8 + .../Scripts/AssemblyDefinitionInfo.cs | 6 + .../Scripts/Exporters/IProjectExporter.cs | 20 ++ .../Exporters/TemplatedProjectExporter.cs | 237 +++++++++++++-- .../ProjectGenerator/Scripts/MSBuildTools.cs | 269 +++++++++--------- .../Scripts/Templates/TemplateFiles.cs | 14 + .../Templates/Text/TextFileTemplate.cs | 11 +- .../Templates/Text/TextTemplatePart.cs | 2 - .../Scripts/Templates/Xml/XmlFileTemplate.cs | 4 +- .../Templates/Xml/XmlTemplateWriter.cs | 19 ++ .../Scripts/UnityProjectInfo.cs | 45 ++- .../ProjectGenerator/Scripts/Utilities.cs | 14 +- 27 files changed, 618 insertions(+), 230 deletions(-) create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency.meta create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/.gitignore create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj create mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.csproj.template create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.csproj.template.meta diff --git a/Samples/ExternalDependencies/NuGet.config b/Samples/ExternalDependencies/NuGet.config index 4b68247..f24e599 100644 --- a/Samples/ExternalDependencies/NuGet.config +++ b/Samples/ExternalDependencies/NuGet.config @@ -2,7 +2,7 @@ - + diff --git a/Samples/ExternalDependencies/Project.Unity/.gitignore b/Samples/ExternalDependencies/Project.Unity/.gitignore index ac6ba34..58596e2 100644 --- a/Samples/ExternalDependencies/Project.Unity/.gitignore +++ b/Samples/ExternalDependencies/Project.Unity/.gitignore @@ -61,5 +61,7 @@ crashlytics-build.properties # Custom MSBuildForUnity Project Related ignore entries /MSBuild/* !/MSBuild/Publish/ +!/MSBuild/settings.json /MSBuild/Publish/**/*.dll -/MSBuild/Publish/**/*.pdb \ No newline at end of file +/MSBuild/Publish/**/*.pdb +/MSBuildForUnity.Common.props \ No newline at end of file diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency.meta b/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency.meta new file mode 100644 index 0000000..3197630 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44c4152708cfc5d4084bfd166c06a9a1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/.gitignore b/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/.gitignore new file mode 100644 index 0000000..15ecc70 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/.gitignore @@ -0,0 +1,4 @@ +Plugins/ +.obj/ +Plugins.meta +!*.csproj \ No newline at end of file diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj b/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj new file mode 100644 index 0000000..8ad6521 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj @@ -0,0 +1,35 @@ + + + + + netstandard2.0 + + + + $(UnityCurrentTargetFramework) + + + + + .obj + Plugins + + + + + all + runtime; build; native; contentfiles; analyzers + + + + + + + + + + + + + + diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta b/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta new file mode 100644 index 0000000..51aaf97 --- /dev/null +++ b/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 91bc129072de5d14796d71e57c38d042 +ScriptedImporter: + fileIDToRecycleName: + 11400000: NewtonsoftDependency + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 0e4dca1acba66fd478b3854f09a32ec7, type: 3} + buildEngine: 0 + profiles: [] diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset index e05cc9d..6c7534b 100644 --- a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset +++ b/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset @@ -538,6 +538,7 @@ PlayerSettings: scriptingRuntimeVersion: 1 apiCompatibilityLevelPerPlatform: '': 6 + Standalone: 3 m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: Template_3D diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/BuildProjects.proj.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/BuildProjects.proj.template index 09a585d..c21081e 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/BuildProjects.proj.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/BuildProjects.proj.template @@ -1,11 +1,11 @@ - + - + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template new file mode 100644 index 0000000..88a887a --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template.meta new file mode 100644 index 0000000..3bde656 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6ad7f3f9a6f131f47bef279015493478 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.csproj.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.csproj.template index 47340d2..e604b64 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.csproj.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.csproj.template @@ -1,11 +1,5 @@ - - - - - - - + - + + + + + + + + + + + + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.csproj.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.csproj.template new file mode 100644 index 0000000..4aa341b --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.csproj.template @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.csproj.template.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.csproj.template.meta new file mode 100644 index 0000000..fb53d42 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.csproj.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 91e61d53940172643823b95ac749c17f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template index 73b7837..35b612f 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.props.template @@ -1,25 +1,19 @@ + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -30,15 +24,12 @@ false - $(MSBuildThisFileDirectory)..\Publish\ - - - + @@ -55,9 +46,7 @@ InEditor;Player - - - + @@ -103,16 +92,12 @@ - - $(AssemblySearchPaths); - + $(AssemblySearchPaths); true - - $(AssemblySearchPaths); - + $(AssemblySearchPaths); @@ -132,9 +117,7 @@ false - - - + @@ -145,8 +128,11 @@ - + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template index 134401a..239c5f6 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template @@ -1,4 +1,10 @@ + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SolutionTemplate.sln.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SolutionTemplate.sln.template index beea14e..ebf9c2f 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SolutionTemplate.sln.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SolutionTemplate.sln.template @@ -2,6 +2,7 @@ # Visual Studio 15 VisualStudioVersion = 15.0.28307.539 MinimumVisualStudioVersion = 10.0.40219.1 +# This file is generated by MSBuildForUnity, it will get updated when the assembly definitions change. #PROJECT_TEMPLATE_START Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "", "", "{}" ProjectSection(ProjectDependencies) = postProject @@ -9,6 +10,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "", "", "{}" +EndProject +#FOLDER_TEMPLATE_END Global GlobalSection(SolutionConfigurationPlatforms) = preSolution #CONFIGURATION_PLATFORM_TEMPLATE | = | @@ -20,6 +25,9 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution +#FOLDER_NESTED_PROJECTS_TEMPLATE {} = {} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {89752EEF-6413-4D53-BA9D-DCA0707F134E} EndGlobalSection diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs index cd3c32d..ca43ffb 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/AssemblyDefinitionInfo.cs @@ -63,6 +63,7 @@ public static AssemblyDefinitionInfo Parse(FileInfo file, UnityProjectInfo unity toReturn.assembly = assembly; toReturn.Directory = file.Directory; + toReturn.AssetLocation = Utilities.GetAssetLocation(file); toReturn.file = file; toReturn.Guid = guid; toReturn.BuiltInPackage = isBuiltInPackage; @@ -100,6 +101,11 @@ public static AssemblyDefinitionInfo Parse(FileInfo file, UnityProjectInfo unity /// public DirectoryInfo Directory { get; private set; } + /// + /// Gets the asset location of this assembly definition. + /// + public AssetLocation AssetLocation { get; private set; } + /// /// Name of this assembly definition info /// diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs index 030d34b..694bd05 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs @@ -18,6 +18,13 @@ public interface IProjectExporter /// The path to the project. FileInfo GetProjectPath(CSProjectInfo projectInfo); + /// + /// Given the , get where the solution file will be exported. + /// + /// This contains parsed data about the current Unity project. + /// The path to where the .sln file will be exported. + string GetSolutionFilePath(UnityProjectInfo unityProjectInfo); + /// /// Exports a C# project given the information. /// @@ -30,6 +37,19 @@ public interface IProjectExporter /// /// This contains parsed data about the current Unity project. void ExportSolution(UnityProjectInfo unityProjectInfo); + + /// + /// Generates the Directory.Build.props file that is expected to be used by both generated and non-generated projects alike. + /// + /// This contains parsed data about the current Unity project. + void GenerateDirectoryPropsFile(UnityProjectInfo unityProjectInfo); + + /// + /// Exports the Common props file based on the given compilation platform and whether to export it as an In-Editor flavor vs Player. + /// + /// The platform to export. + /// True if this is an In-Editor flavor, false otherwise. + void ExportCommonPropsFile(CompilationPlatformInfo platform, bool inEditorConfiguration); } } #endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs index ff8f095..1cef882 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs @@ -17,37 +17,64 @@ namespace Microsoft.Build.Unity.ProjectGeneration.Exporters /// public class TemplatedProjectExporter : IProjectExporter { - private readonly DirectoryInfo propsOutputFolder; + private const string MSBuildFileSuffix = "msb4u"; + + private readonly DirectoryInfo generatedOutputFolder; private readonly FileTemplate projectFileTemplate; + private readonly FileTemplate generatedProjectFileTemplate; private readonly FileTemplate propsFileTemplate; private readonly FileTemplate targetsFileTemplate; private readonly FileTemplate solutionFileTemplate; + private readonly FileTemplate msbuildForUnityCommonTemplate; /// /// Creates a new instance of the template driven . /// - /// The output folder for the projects and props. + /// The output folder for the projects and props. /// The path to the solution template. /// The path to the C# project file template. /// The path to the props file template. /// The path to the targets file template. - public TemplatedProjectExporter(DirectoryInfo propsOutputFolder, FileInfo solutionFileTemplatePath, FileInfo projectFileTemplatePath, FileInfo projectPropsFileTemplatePath, FileInfo projectTargetsFileTemplatePath) + public TemplatedProjectExporter(DirectoryInfo generatedOutputFolder, FileInfo solutionFileTemplatePath, FileInfo projectFileTemplatePath, FileInfo generatedProjectFileTemplatePath, FileInfo projectPropsFileTemplatePath, FileInfo projectTargetsFileTemplatePath, FileInfo msbuildForUnityCommonTemplatePath) { - this.propsOutputFolder = propsOutputFolder; + this.generatedOutputFolder = generatedOutputFolder; FileTemplate.TryParseTemplate(projectFileTemplatePath, out projectFileTemplate); + FileTemplate.TryParseTemplate(generatedProjectFileTemplatePath, out generatedProjectFileTemplate); FileTemplate.TryParseTemplate(projectPropsFileTemplatePath, out propsFileTemplate); FileTemplate.TryParseTemplate(projectTargetsFileTemplatePath, out targetsFileTemplate); FileTemplate.TryParseTemplate(solutionFileTemplatePath, out solutionFileTemplate); + FileTemplate.TryParseTemplate(msbuildForUnityCommonTemplatePath, out msbuildForUnityCommonTemplate); } - /// + private string GetProjectFilePath(DirectoryInfo directory, CSProjectInfo projectInfo) + { + return Path.Combine(directory.FullName, $"{projectInfo.Name}.{MSBuildFileSuffix}.csproj"); + } + + /// public FileInfo GetProjectPath(CSProjectInfo projectInfo) { - return new FileInfo(Path.Combine(propsOutputFolder.FullName, $"{projectInfo.Name}.csproj")); + switch (projectInfo.AssemblyDefinitionInfo.AssetLocation) + { + case AssetLocation.BuiltInPackage: + case AssetLocation.External: + case AssetLocation.PackageLibraryCache: + return new FileInfo(GetProjectFilePath(generatedOutputFolder, projectInfo)); + case AssetLocation.Project: + case AssetLocation.Package: + return new FileInfo(GetProjectFilePath(projectInfo.AssemblyDefinitionInfo.Directory, projectInfo)); + default: + throw new InvalidOperationException("The project's assembly definition file is in an unknown location."); + } + } + + public string GetSolutionFilePath(UnityProjectInfo unityProjectInfo) + { + return Path.Combine(Utilities.AssetPath, $"{unityProjectInfo.UnityProjectName}.{MSBuildFileSuffix}.sln"); } /// @@ -55,9 +82,20 @@ public void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo proje { string projectPath = GetProjectPath(projectInfo).FullName; - if (File.Exists(projectPath)) + bool generatedProject; + switch (projectInfo.AssemblyDefinitionInfo.AssetLocation) { - File.Delete(projectPath); + case AssetLocation.BuiltInPackage: + case AssetLocation.External: + case AssetLocation.PackageLibraryCache: + generatedProject = true; + break; + case AssetLocation.Project: + case AssetLocation.Package: + generatedProject = false; + break; + default: + throw new InvalidOperationException("The project's assembly definition file is in an unknown location."); } if (!TryExportPropsFile(unityProjectInfo, projectInfo)) @@ -72,13 +110,21 @@ public void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo proje return; } - if (File.Exists(projectPath)) + if (generatedProject) { - Debug.Log($"Skipping replacing the existing C# project file {projectInfo.Name}"); + generatedProjectFileTemplate.Write(projectPath, generatedProjectFileTemplate.Root.CreateReplacementSet()); + File.SetAttributes(projectPath, FileAttributes.ReadOnly); } else { - projectFileTemplate.Write(projectPath, projectFileTemplate.Root.CreateReplacementSet()); + if (File.Exists(projectPath)) + { + Debug.Log($"Skipping replacing the existing C# project file {projectInfo.Name}"); + } + else + { + projectFileTemplate.Write(projectPath, projectFileTemplate.Root.CreateReplacementSet()); + } } } @@ -90,7 +136,7 @@ private bool TryExportPropsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo ITemplatePart projectReferenceSetTemplatePart = rootTemplatePart.Templates["PROJECT_REFERENCE_SET"]; ITemplatePart sourceExcludeTemplatePart = rootTemplatePart.Templates["SOURCE_EXCLUDE"]; - string projectPath = GetProjectPath(projectInfo).FullName; + string projectPath = GetProjectFilePath(generatedOutputFolder, projectInfo); foreach (AssemblyDefinitionInfo nestedAsmdef in projectInfo.AssemblyDefinitionInfo.NestedAssemblyDefinitionFiles) { @@ -108,20 +154,24 @@ private bool TryExportPropsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo rootTemplatePart.Tokens["DEVELOPMENT_BUILD"].AssignValue(rootReplacementSet, "false"); rootTemplatePart.Tokens["IS_EDITOR_ONLY_TARGET"].AssignValue(rootReplacementSet, (projectInfo.ProjectType == ProjectType.EditorAsmDef || projectInfo.ProjectType == ProjectType.PredefinedEditorAssembly).ToString()); rootTemplatePart.Tokens["UNITY_EDITOR_INSTALL_FOLDER"].AssignValue(rootReplacementSet, Path.GetDirectoryName(EditorApplication.applicationPath) + "\\"); + rootTemplatePart.Tokens["PROJECT_NAME"].AssignValue(rootReplacementSet, projectInfo.Name); rootTemplatePart.Tokens["DEFAULT_PLATFORM"].AssignValue(rootReplacementSet, unityProjectInfo.AvailablePlatforms.First(t => t.BuildTarget == BuildTarget.StandaloneWindows).Name); rootTemplatePart.Tokens["SUPPORTED_PLATFORMS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", unityProjectInfo.AvailablePlatforms.Select(t => t.Name))); rootTemplatePart.Tokens["INEDITOR_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", inEditorSearchPaths)); rootTemplatePart.Tokens["PLAYER_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", playerSearchPaths)); - rootTemplatePart.Tokens["PLATFORM_PROPS_FOLDER_PATH"].AssignValue(rootReplacementSet, propsOutputFolder.FullName); + rootTemplatePart.Tokens["PLATFORM_PROPS_FOLDER_PATH"].AssignValue(rootReplacementSet, generatedOutputFolder.FullName); rootTemplatePart.Tokens["PROJECT_DIRECTORY_PATH"].AssignValue(rootReplacementSet, projectInfo.AssemblyDefinitionInfo.Directory.FullName); - propsFileTemplate.Write(projectPath.Replace("csproj", "g.props"), rootReplacementSet); + string propsFilePath = projectPath.Replace("csproj", "g.props"); + propsFileTemplate.Write(propsFilePath, rootReplacementSet); + File.SetAttributes(propsFilePath, FileAttributes.ReadOnly); return true; } private bool TryExportTargetsFile(UnityProjectInfo unityProjectInfo, CSProjectInfo projectInfo) { - string projectPath = GetProjectPath(projectInfo).FullName; + string projectPath = GetProjectFilePath(generatedOutputFolder, projectInfo); + ITemplatePart rootTemplatePart = targetsFileTemplate.Root; TemplateReplacementSet rootReplacementSet = rootTemplatePart.CreateReplacementSet(); ITemplatePart supportedPlatformBuildTemplate = rootTemplatePart.Templates["SUPPORTED_PLATFORM_BUILD_CONDITION"]; @@ -129,15 +179,30 @@ private bool TryExportTargetsFile(UnityProjectInfo unityProjectInfo, CSProjectIn PopulateSupportedPlatformBuildConditions(supportedPlatformBuildTemplate, rootReplacementSet, "InEditor", projectInfo.InEditorPlatforms); PopulateSupportedPlatformBuildConditions(supportedPlatformBuildTemplate, rootReplacementSet, "Player", projectInfo.PlayerPlatforms); - targetsFileTemplate.Write(projectPath.Replace("csproj", "g.targets"), rootReplacementSet); + string targetsFilePath = projectPath.Replace("csproj", "g.targets"); + targetsFileTemplate.Write(targetsFilePath, rootReplacementSet); + File.SetAttributes(targetsFilePath, FileAttributes.ReadOnly); return true; } + public void GenerateDirectoryPropsFile(UnityProjectInfo unityProjectInfo) + { + string outputPath = Path.Combine(Utilities.ProjectPath, "MSBuildForUnity.Common.props"); + + ITemplatePart rootTemplate = msbuildForUnityCommonTemplate.Root; + TemplateReplacementSet rootReplacementSet = rootTemplate.CreateReplacementSet(null); + + rootTemplate.Tokens["GENERATED_OUTPUT_DIRECTORY"].AssignValue(rootReplacementSet, generatedOutputFolder.FullName); + rootTemplate.Tokens["CURRENT_UNITY_PLATFORM"].AssignValue(rootReplacementSet, unityProjectInfo.CurrentPlayerPlatform.Name); + rootTemplate.Tokens["CURRENT_TARGET_FRAMEWORK"].AssignValue(rootReplacementSet, unityProjectInfo.CurrentPlayerPlatform.TargetFramework.AsMSBuildString()); + msbuildForUnityCommonTemplate.Write(outputPath, rootReplacementSet); + } + /// public void ExportSolution(UnityProjectInfo unityProjectInfo) { - string solutionFilePath = Path.Combine(propsOutputFolder.FullName, $"{unityProjectInfo.UnityProjectName}.sln"); + string solutionFilePath = GetSolutionFilePath(unityProjectInfo); if (File.Exists(solutionFilePath)) { @@ -147,9 +212,11 @@ public void ExportSolution(UnityProjectInfo unityProjectInfo) TemplateReplacementSet rootReplacementSet = rootTemplatePart.CreateReplacementSet(); ITemplatePart projectTemplate = rootTemplatePart.Templates["PROJECT"]; + ITemplatePart folderTemplate = rootTemplatePart.Templates["FOLDER"]; ITemplatePart configPlatformTemplate = rootTemplatePart.Templates["CONFIGURATION_PLATFORM"]; ITemplatePart configPlatformMappingTemplate = rootTemplatePart.Templates["CONFIGURATION_PLATFORM_MAPPING"]; ITemplatePart configPlatformEnabledTemplate = rootTemplatePart.Templates["CONFIGURATION_PLATFORM_ENABLED"]; + ITemplatePart folderNestedProjectsTemplate = rootTemplatePart.Templates["FOLDER_NESTED_PROJECTS"]; CSProjectInfo[] unorderedProjects = unityProjectInfo.CSProjects.Select(t => t.Value).ToArray(); List orderedProjects = new List(); @@ -179,12 +246,34 @@ public void ExportSolution(UnityProjectInfo unityProjectInfo) break; } } + + List builtinPackages = new List(); + List importedPacakges = new List(); + List externalPackages = new List(); foreach (CSProjectInfo project in orderedProjects) { TemplateReplacementSet replacementSet = projectTemplate.CreateReplacementSet(rootReplacementSet); ProcessProjectEntry(project, projectTemplate, replacementSet); + + switch (project.AssemblyDefinitionInfo.AssetLocation) + { + case AssetLocation.BuiltInPackage: + builtinPackages.Add(project); + break; + case AssetLocation.PackageLibraryCache: + importedPacakges.Add(project); + break; + case AssetLocation.External: + externalPackages.Add(project); + break; + default: break; + } } + PopulateFolder(folderTemplate, folderNestedProjectsTemplate, rootReplacementSet, "Built In Packages", builtinPackages); + PopulateFolder(folderTemplate, folderNestedProjectsTemplate, rootReplacementSet, "Imported Packages", importedPacakges); + PopulateFolder(folderTemplate, folderNestedProjectsTemplate, rootReplacementSet, "External Packages", externalPackages); + ITemplateToken configPlatform_ConfigurationToken = configPlatformTemplate.Tokens["CONFIGURATION"]; ITemplateToken configPlatform_PlatformToken = configPlatformTemplate.Tokens["PLATFORM"]; foreach (CompilationPlatformInfo platform in unityProjectInfo.AvailablePlatforms) @@ -238,6 +327,25 @@ void ProcessMappings(Guid guid, string configuration, IReadOnlyDictionary projects) + { + if (projects.Count > 0) + { + string folderGuid = Guid.NewGuid().ToString().ToUpper(); + + TemplateReplacementSet replacementSet = folderTemplate.CreateReplacementSet(parentReplacementSet); + folderTemplate.Tokens["FOLDER_NAME"].AssignValue(replacementSet, folderName); + folderTemplate.Tokens["FOLDER_GUID"].AssignValue(replacementSet, folderGuid); + + foreach (CSProjectInfo project in projects) + { + replacementSet = folderNestedProjectsTemplate.CreateReplacementSet(parentReplacementSet); + folderNestedProjectsTemplate.Tokens["FOLDER_GUID"].AssignValue(replacementSet, folderGuid); + folderNestedProjectsTemplate.Tokens["CHILD_GUID"].AssignValue(replacementSet, project.Guid.ToString().ToUpper()); + } + } + } + private void PopulateSupportedPlatformBuildConditions(ITemplatePart templatePart, TemplateReplacementSet parentReplacementSet, string configuration, IReadOnlyDictionary platforms) { foreach (KeyValuePair platform in platforms) @@ -258,8 +366,9 @@ private void CreateProjectReferencesSet(CSProjectInfo projectInfo, ITemplatePart { List platformConditions = GetPlatformConditions(inEditor ? projectInfo.InEditorPlatforms : projectInfo.PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); + string projectPath = GetProjectPath(dependency.Dependency).FullName; TemplateReplacementSet replacementSet = projectReferenceTemplatePart.CreateReplacementSet(templateReplacementSet); - projectReferenceTemplatePart.Tokens["REFERENCE"].AssignValue(replacementSet, $"{dependency.Dependency.Name}.csproj"); + projectReferenceTemplatePart.Tokens["REFERENCE"].AssignValue(replacementSet, projectPath); //projectReferenceTemplatePart.Tokens["HINT_PATH"].AssignValue(replacementSet, GetProjectPath(dependency.Dependency).AbsolutePath); projectReferenceTemplatePart.Tokens["CONDITION"].AssignValue(replacementSet, platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)); } @@ -304,7 +413,7 @@ private void ProcessProjectEntry(CSProjectInfo projectInfo, ITemplatePart templa string projectPath = GetProjectPath(projectInfo).FullName; templatePart.Tokens["PROJECT_NAME"].AssignValue(replacementSet, projectInfo.Name); - templatePart.Tokens["PROJECT_RELATIVE_PATH"].AssignValue(replacementSet, Path.GetFileName(projectPath)); + templatePart.Tokens["PROJECT_RELATIVE_PATH"].AssignValue(replacementSet, projectPath); templatePart.Tokens["PROJECT_GUID"].AssignValue(replacementSet, projectInfo.Guid.ToString().ToUpper()); ITemplatePart dependencyTemplate = templatePart.Templates["PROJECT_DEPENDENCY"]; @@ -318,6 +427,96 @@ private void ProcessProjectEntry(CSProjectInfo projectInfo, ITemplatePart templa } } } + + public void ExportCommonPropsFile(CompilationPlatformInfo platform, bool inEditorConfiguration) + { + string configuration = inEditorConfiguration ? "InEditor" : "Player"; + + if (!FileTemplate.TryParseTemplate(TemplateFiles.Instance.GetTemplateFilePathForPlatform(platform.Name, configuration, platform.ScriptingBackend), out FileTemplate fileTemplate)) + { + throw new InvalidOperationException("Failed to parse template file for common props."); + } + + ITemplatePart rootPart = fileTemplate.Root; + TemplateReplacementSet rootReplacementSet = rootPart.CreateReplacementSet(); + + if (inEditorConfiguration) + { + ProcessPlatformTemplate(rootPart, rootReplacementSet, platform.Name, configuration, platform.BuildTarget, platform.TargetFramework, + platform.CommonPlatformReferences.Concat(platform.AdditionalInEditorReferences), + platform.CommonPlatformDefines.Concat(platform.AdditionalInEditorDefines)); + } + else + { + ProcessPlatformTemplate(rootPart, rootReplacementSet, platform.Name, configuration, platform.BuildTarget, platform.TargetFramework, + platform.CommonPlatformReferences.Concat(platform.AdditionalPlayerReferences), + platform.CommonPlatformDefines.Concat(platform.AdditionalPlayerDefines)); + } + + fileTemplate.Write(Path.Combine(generatedOutputFolder.FullName, $"{platform.Name}.{configuration}.props"), rootReplacementSet); + } + + private void ProcessPlatformTemplate(ITemplatePart rootPart, TemplateReplacementSet rootReplacementSet, string platformName, string configuration, BuildTarget buildTarget, TargetFramework targetFramework, IEnumerable references, IEnumerable defines, params HashSet[] priorToCheck) + { + ProcessReferences(buildTarget, references, out HashSet platformAssemblySearchPaths, out HashSet platformAssemblyReferencePaths, priorToCheck); + + string minUWPPlatform = EditorUserBuildSettings.wsaMinUWPSDK; + if (string.IsNullOrWhiteSpace(minUWPPlatform) || new Version(minUWPPlatform) < MSBuildTools.DefaultMinUWPSDK) + { + minUWPPlatform = MSBuildTools.DefaultMinUWPSDK.ToString(); + } + + string[] versionParts = Application.unityVersion.Split('.'); + // This is a try replace because some may hardcode this value + rootPart.TryReplaceToken("TARGET_FRAMEWORK", rootReplacementSet, targetFramework.AsMSBuildString()); + + rootPart.Tokens["PLATFORM_COMMON_DEFINE_CONSTANTS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", defines)); + rootPart.Tokens["PLATFORM_COMMON_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", platformAssemblySearchPaths)); + + // These are UWP specific, but they will be no-op if not needed + if (buildTarget == BuildTarget.WSAPlayer && configuration == "Player") + { + string targetUWPPlatform = EditorUserBuildSettings.wsaUWPSDK; + if (string.IsNullOrWhiteSpace(targetUWPPlatform)) + { + targetUWPPlatform = Utilities.GetUWPSDKs().Max().ToString(4); + } + rootPart.TryReplaceToken("UWP_TARGET_PLATFORM_VERSION", rootReplacementSet, targetUWPPlatform); + rootPart.TryReplaceToken("UWP_MIN_PLATFORM_VERSION", rootReplacementSet, minUWPPlatform); + } + + rootPart.Tokens["UNITY_MAJOR_VERSION"].AssignValue(rootReplacementSet, versionParts[0]); + rootPart.Tokens["UNITY_MINOR_VERSION"].AssignValue(rootReplacementSet, versionParts[1]); + + ITemplatePart platformCommonReferencePart = rootPart.Templates["PLATFORM_COMMON_REFERENCE"]; + foreach (string reference in platformAssemblyReferencePaths) + { + TemplateReplacementSet replacementSet = platformCommonReferencePart.CreateReplacementSet(rootReplacementSet); + platformCommonReferencePart.Tokens["REFERENCE"].AssignValue(replacementSet, Path.GetFileNameWithoutExtension(reference)); + platformCommonReferencePart.Tokens["HINT_PATH"].AssignValue(replacementSet, reference); + } + } + + private void ProcessReferences(BuildTarget buildTarget, IEnumerable references, out HashSet searchPaths, out HashSet referenceNames, params HashSet[] priorToCheck) + { + searchPaths = new HashSet(); + referenceNames = new HashSet(); + + foreach (string reference in references) + { + string directory = Path.GetDirectoryName(reference); + string fileName = Path.GetFileName(reference); + if (!priorToCheck.Any(t => t.Contains(directory))) // Don't add duplicates + { + searchPaths.Add(directory); + } + + if (!referenceNames.Add(reference)) + { + Debug.LogError($"Duplicate assembly reference found for platform '{buildTarget}' - {reference} ignoring."); + } + } + } } } #endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs index bb063eb..2a9dc78 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs @@ -8,17 +8,51 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; -using System.Linq; using UnityEditor; -using UnityEditor.Compilation; using UnityEngine; using Debug = UnityEngine.Debug; namespace Microsoft.Build.Unity.ProjectGeneration { + public class MSBuildToolsConfig + { + private static string MSBuildSettingsFilePath { get; } = Path.Combine(Utilities.ProjectPath, "MSBuild", "settings.json"); + + [SerializeField] + private bool autoGenerateEnabled = false; + + public bool AutoGenerateEnabled + { + get => autoGenerateEnabled; + set + { + autoGenerateEnabled = value; + Save(); + } + } + + private void Save() + { + File.WriteAllText(MSBuildSettingsFilePath, EditorJsonUtility.ToJson(this)); + } + + public static MSBuildToolsConfig Load() + { + MSBuildToolsConfig toReturn = new MSBuildToolsConfig(); + + if (File.Exists(MSBuildSettingsFilePath)) + { + EditorJsonUtility.FromJsonOverwrite(File.ReadAllText(MSBuildSettingsFilePath), toReturn); + } + + return toReturn; + } + } + /// /// Class that exposes the MSBuild project generation operation. /// + [InitializeOnLoad] public static class MSBuildTools { private static readonly HashSet supportedBuildTargets = new HashSet() @@ -31,21 +65,48 @@ public static class MSBuildTools }; public const string CSharpVersion = "7.3"; + public const string AutoGenerate = "MSBuild/Generation Enabled"; + public static readonly Version DefaultMinUWPSDK = new Version("10.0.14393.0"); - private static readonly string uwpMinPlatformVersion = EditorUserBuildSettings.wsaMinUWPSDK; - private static readonly string uwpTargetPlatformVersion = EditorUserBuildSettings.wsaUWPSDK; + private static UnityProjectInfo unityProjectInfo; + + public static UnityProjectInfo UnityProjectInfo => unityProjectInfo ?? (unityProjectInfo = new UnityProjectInfo(supportedBuildTargets)); private static IProjectExporter exporter = null; - private static IProjectExporter Exporter => exporter ?? (exporter = new TemplatedProjectExporter(new DirectoryInfo(Utilities.MSBuildProjectFolder), TemplateFiles.Instance.MSBuildSolutionTemplatePath, TemplateFiles.Instance.SDKProjectFileTemplatePath, TemplateFiles.Instance.SDKProjectPropsFileTemplatePath, TemplateFiles.Instance.SDKProjectTargetsFileTemplatePath)); + private static IProjectExporter Exporter => exporter ?? (exporter = new TemplatedProjectExporter(new DirectoryInfo(Utilities.MSBuildProjectFolder), + TemplateFiles.Instance.MSBuildSolutionTemplatePath, + TemplateFiles.Instance.SDKProjectFileTemplatePath, + TemplateFiles.Instance.SDKGeneratedProjectFileTemplatePath, + TemplateFiles.Instance.SDKProjectPropsFileTemplatePath, + TemplateFiles.Instance.SDKProjectTargetsFileTemplatePath, + TemplateFiles.Instance.MSBuildForUnityCommonPropsTemplatePath)); + + public static MSBuildToolsConfig Config { get; } = MSBuildToolsConfig.Load(); + + [MenuItem(AutoGenerate, priority = 101)] + public static void ToggleAutoGenerate() + { + Config.AutoGenerateEnabled = !Config.AutoGenerateEnabled; + Menu.SetChecked(AutoGenerate, Config.AutoGenerateEnabled); + RunCoreAutoGenerate(); + } + + [MenuItem(AutoGenerate, true, priority = 101)] + public static bool ToggleAutoGenerate_Validate() + { + Menu.SetChecked(AutoGenerate, Config.AutoGenerateEnabled); + return true; + } - [MenuItem("MSBuild/Generate C# SDK Projects", priority = 101)] + + [MenuItem("MSBuild/Regenerate C# SDK Projects", priority = 102)] public static void GenerateSDKProjects() { try { - RunGenerateSDKProjects(); + RegenerateEverything(true); Debug.Log($"{nameof(GenerateSDKProjects)} Completed Succesfully."); } catch @@ -55,50 +116,79 @@ public static void GenerateSDKProjects() } } - private static void RunGenerateSDKProjects() + static MSBuildTools() + { + RunCoreAutoGenerate(); + } + + private static void RunCoreAutoGenerate() + { + Exporter.GenerateDirectoryPropsFile(UnityProjectInfo); + + if (!Config.AutoGenerateEnabled) + { + return; + } + + string tokenFile = Path.Combine(Utilities.ProjectPath, "Temp", "PropsGeneratedThisEditorInstance.token"); + // Check if a file exists, if it does, we already generated this editor instance + if (!File.Exists(tokenFile)) + { + RegenerateEverything(false); + + File.Create(tokenFile).Dispose(); + } + + } + + private static void ExportCoreUnityPropFiles() + { + foreach (CompilationPlatformInfo platform in UnityProjectInfo.AvailablePlatforms) + { + // Check for specialized template, otherwise get the common one + Exporter.ExportCommonPropsFile(platform, true); + Exporter.ExportCommonPropsFile(platform, false); + } + + Exporter.ExportCommonPropsFile(UnityProjectInfo.EditorPlatform, true); + } + + private static void RegenerateEverything(bool reparseUnityData) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); long postCleanupAndCopyStamp = 0, solutionExportStart = 0, solutionExportEnd = 0, exporterStart = 0, exporterEnd = 0, propsFileGenerationStart = 0, propsFileGenerationEnd = 0; try { - // Create a copy of the packages as they might change after we create the MSBuild project - try + if (Directory.Exists(Utilities.MSBuildProjectFolder)) { - Utilities.EnsureCleanDirectory(Utilities.MSBuildProjectFolder); - } - catch (IOException ex) - { - if (ex.Message.Contains(@"db.lock")) - { - Debug.LogError("Generated project appears to be still open with Visual Studio."); - throw new InvalidDataException("Generated project appears to be still open with Visual Studio.", ex); - } - else + // Create a copy of the packages as they might change after we create the MSBuild project + foreach (string file in Directory.EnumerateFiles(Utilities.MSBuildProjectFolder, "*", SearchOption.TopDirectoryOnly)) { - throw; + File.SetAttributes(file, FileAttributes.Normal); + File.Delete(file); } } + else + { + Directory.CreateDirectory(Utilities.MSBuildProjectFolder); + } - Utilities.EnsureCleanDirectory(Path.Combine(Utilities.MSBuildOutputFolder, "Output")); + if (reparseUnityData) + { + unityProjectInfo?.Dispose(); + unityProjectInfo = null; + } postCleanupAndCopyStamp = stopwatch.ElapsedMilliseconds; - List platforms = CompilationPipeline.GetAssemblyDefinitionPlatforms() - .Where(t => supportedBuildTargets.Contains(t.BuildTarget)) - .Select(CompilationPlatformInfo.GetCompilationPlatform) - .OrderBy(t => t.Name) - .ToList(); - - CompilationPlatformInfo editorPlatform = CompilationPlatformInfo.GetEditorPlatform(); - propsFileGenerationStart = stopwatch.ElapsedMilliseconds; - CreateCommonPropsFile(platforms, editorPlatform, Utilities.MSBuildProjectFolder); + Exporter.GenerateDirectoryPropsFile(UnityProjectInfo); + ExportCoreUnityPropFiles(); propsFileGenerationEnd = stopwatch.ElapsedMilliseconds; - UnityProjectInfo unityProjectInfo = new UnityProjectInfo(platforms); solutionExportStart = stopwatch.ElapsedMilliseconds; - Exporter.ExportSolution(unityProjectInfo); + RegenerateSolution(); solutionExportEnd = stopwatch.ElapsedMilliseconds; foreach (string otherFile in TemplateFiles.Instance.OtherFiles) @@ -109,7 +199,7 @@ private static void RunGenerateSDKProjects() string buildProjectsFile = "BuildProjects.proj"; if (!File.Exists(Path.Combine(Utilities.MSBuildOutputFolder, buildProjectsFile))) { - GenerateBuildProjectsFile(buildProjectsFile, unityProjectInfo.UnityProjectName, platforms); + GenerateBuildProjectsFile(buildProjectsFile, Exporter.GetSolutionFilePath(UnityProjectInfo), UnityProjectInfo.AvailablePlatforms); } } finally @@ -119,7 +209,12 @@ private static void RunGenerateSDKProjects() } } - private static void GenerateBuildProjectsFile(string fileName, string projectName, IEnumerable compilationPlatforms) + private static void RegenerateSolution() + { + Exporter.ExportSolution(UnityProjectInfo); + } + + private static void GenerateBuildProjectsFile(string fileName, string solutionPath, IEnumerable compilationPlatforms) { string template = File.ReadAllText(TemplateFiles.Instance.BuildProjectsTemplatePath); if (!Utilities.TryGetXMLTemplate(template, "PLATFORM_TARGET", out string platformTargetTemplate)) @@ -156,114 +251,12 @@ private static void GenerateBuildProjectsFile(string fileName, string projectNam string output = Utilities.ReplaceTokens(template, new Dictionary() { {platformTargetTemplate, string.Join("\n", entries) }, - {"", projectName } + {"", solutionPath } }); File.WriteAllText(Path.Combine(Utilities.MSBuildOutputFolder, fileName), output); File.WriteAllText(Path.Combine(Utilities.MSBuildOutputFolder, "BuildAll.bat"), string.Join("\r\n", batBuildEntry)); } - - private static void CreateCommonPropsFile(IEnumerable availablePlatforms, CompilationPlatformInfo editorPlatform, string projectOutputFolder) - { - foreach (CompilationPlatformInfo platform in availablePlatforms) - { - // Check for specialized template, otherwise get the common one - ProcessPlatformTemplateForConfiguration(platform, projectOutputFolder, true); - ProcessPlatformTemplateForConfiguration(platform, projectOutputFolder, false); - } - - ProcessPlatformTemplateForConfiguration(editorPlatform, projectOutputFolder, true); - } - - private static void ProcessPlatformTemplateForConfiguration(CompilationPlatformInfo platform, string projectOutputFolder, bool inEditorConfiguration) - { - string configuration = inEditorConfiguration ? "InEditor" : "Player"; - - if (!FileTemplate.TryParseTemplate(TemplateFiles.Instance.GetTemplateFilePathForPlatform(platform.Name, configuration, platform.ScriptingBackend), out FileTemplate fileTemplate)) - { - throw new InvalidOperationException("Failed to parse template file for common props."); - } - - ITemplatePart rootPart = fileTemplate.Root; - TemplateReplacementSet rootReplacementSet = rootPart.CreateReplacementSet(); - - if (inEditorConfiguration) - { - ProcessPlatformTemplate(rootPart, rootReplacementSet, platform.Name, configuration, platform.BuildTarget, platform.TargetFramework, - platform.CommonPlatformReferences.Concat(platform.AdditionalInEditorReferences), - platform.CommonPlatformDefines.Concat(platform.AdditionalInEditorDefines)); - } - else - { - ProcessPlatformTemplate(rootPart, rootReplacementSet, platform.Name, configuration, platform.BuildTarget, platform.TargetFramework, - platform.CommonPlatformReferences.Concat(platform.AdditionalPlayerReferences), - platform.CommonPlatformDefines.Concat(platform.AdditionalPlayerDefines)); - } - - fileTemplate.Write(Path.Combine(projectOutputFolder, $"{platform.Name}.{configuration}.props"), rootReplacementSet); - } - - private static void ProcessPlatformTemplate(ITemplatePart rootPart, TemplateReplacementSet rootReplacementSet, string platformName, string configuration, BuildTarget buildTarget, TargetFramework targetFramework, IEnumerable references, IEnumerable defines, params HashSet[] priorToCheck) - { - ProcessReferences(buildTarget, references, out HashSet platformAssemblySearchPaths, out HashSet platformAssemblyReferencePaths, priorToCheck); - - string minUWPPlatform = uwpMinPlatformVersion; - if (string.IsNullOrWhiteSpace(minUWPPlatform) || new Version(minUWPPlatform) < DefaultMinUWPSDK) - { - minUWPPlatform = DefaultMinUWPSDK.ToString(); - } - - string[] versionParts = Application.unityVersion.Split('.'); - // This is a try replace because some may hardcode this value - rootPart.TryReplaceToken("TARGET_FRAMEWORK", rootReplacementSet, targetFramework.AsMSBuildString()); - - rootPart.Tokens["PLATFORM_COMMON_DEFINE_CONSTANTS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", defines)); - rootPart.Tokens["PLATFORM_COMMON_ASSEMBLY_SEARCH_PATHS"].AssignValue(rootReplacementSet, new DelimitedStringSet(";", platformAssemblySearchPaths)); - - // These are UWP specific, but they will be no-op if not needed - if (buildTarget == BuildTarget.WSAPlayer && configuration == "Player") - { - string targetUWPPlatform = uwpTargetPlatformVersion; - if (string.IsNullOrWhiteSpace(targetUWPPlatform)) - { - targetUWPPlatform = Utilities.GetUWPSDKs().Max().ToString(4); - } - rootPart.TryReplaceToken("UWP_TARGET_PLATFORM_VERSION", rootReplacementSet, targetUWPPlatform); - rootPart.TryReplaceToken("UWP_MIN_PLATFORM_VERSION", rootReplacementSet, minUWPPlatform); - } - - rootPart.Tokens["UNITY_MAJOR_VERSION"].AssignValue(rootReplacementSet, versionParts[0]); - rootPart.Tokens["UNITY_MINOR_VERSION"].AssignValue(rootReplacementSet, versionParts[1]); - - ITemplatePart platformCommonReferencePart = rootPart.Templates["PLATFORM_COMMON_REFERENCE"]; - foreach (string reference in platformAssemblyReferencePaths) - { - TemplateReplacementSet replacementSet = platformCommonReferencePart.CreateReplacementSet(rootReplacementSet); - platformCommonReferencePart.Tokens["REFERENCE"].AssignValue(replacementSet, Path.GetFileNameWithoutExtension(reference)); - platformCommonReferencePart.Tokens["HINT_PATH"].AssignValue(replacementSet, reference); - } - } - - private static void ProcessReferences(BuildTarget buildTarget, IEnumerable references, out HashSet searchPaths, out HashSet referenceNames, params HashSet[] priorToCheck) - { - searchPaths = new HashSet(); - referenceNames = new HashSet(); - - foreach (string reference in references) - { - string directory = Path.GetDirectoryName(reference); - string fileName = Path.GetFileName(reference); - if (!priorToCheck.Any(t => t.Contains(directory))) // Don't add duplicates - { - searchPaths.Add(directory); - } - - if (!referenceNames.Add(reference)) - { - Debug.LogError($"Duplicate assembly reference found for platform '{buildTarget}' - {reference} ignoring."); - } - } - } } } #endif \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs index 79c87b1..3f48c97 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs @@ -20,7 +20,9 @@ public class TemplateFiles { private const string TemplateFilesFolderName = "MSBuildTemplates"; private const string MSBuildSolutionTemplateName = "SolutionTemplate.sln.template"; + private const string MSBuildForUnityCommonPropsTemplateName = "MSBuildForUnity.Common.props.template"; private const string SDKProjectFileTemplateName = "SDKProjectTemplate.csproj.template"; + private const string SDKGeneratedProjectFileTemplateName = "SDKProjectTemplate.g.csproj.template"; private const string SDKProjectPropsFileTemplateName = "SDKProjectTemplate.g.props.template"; private const string SDKProjectTargetsFileTemplateName = "SDKProjectTemplate.g.targets.template"; private const string PlatformPropsTemplateName = "Platform.Configuration.Any.props.template"; @@ -41,11 +43,21 @@ public class TemplateFiles /// public FileInfo MSBuildSolutionTemplatePath { get; } + /// + /// The path to the Directory.Build.props file template. + /// + public FileInfo MSBuildForUnityCommonPropsTemplatePath { get; } + /// /// Gets the MSBuild C# SDK Project file (.csproj) template path. /// public FileInfo SDKProjectFileTemplatePath { get; } + /// + /// Gets the MSBuild C# SDK Project file (.csproj) template path for generated projects (Read-Only). + /// + public FileInfo SDKGeneratedProjectFileTemplatePath { get; } + /// /// Gets the MSBuild C# SDK Project file (.csproj) template path. /// @@ -101,7 +113,9 @@ private TemplateFiles() Dictionary fileNamesMaps = files.ToDictionary(t => Path.GetFileName(t)); MSBuildSolutionTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "MSBuild Solution", MSBuildSolutionTemplateName)); + MSBuildForUnityCommonPropsTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Directory.Build Props File", MSBuildForUnityCommonPropsTemplateName)); SDKProjectFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project", SDKProjectFileTemplateName)); + SDKGeneratedProjectFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Generated SDK Project", SDKGeneratedProjectFileTemplateName)); SDKProjectPropsFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project Props", SDKProjectPropsFileTemplateName)); SDKProjectTargetsFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project Targets", SDKProjectTargetsFileTemplateName)); PlatformPropsTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Platform Props", PlatformPropsTemplateName)); diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs index ae863af..7e725c6 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextFileTemplate.cs @@ -17,7 +17,7 @@ internal class TextFileTemplate : FileTemplate private const string TemplateStartSuffix = "_TEMPLATE_START"; private const string TokenSuffix = "_TOKEN"; - internal TextFileTemplate(FileInfo templateFile) + internal TextFileTemplate(FileInfo templateFile) : base(templateFile) { } @@ -88,6 +88,7 @@ private TextTemplatePart ParseInlineTemplate(string inlineTemplate) Dictionary subTokens = new Dictionary(); ParseLineForTokens(inlineTemplate, templateParts, subTokens); + templateParts.Add(Environment.NewLine); return new TextTemplatePart(templateParts, subTokens, new Dictionary()); } @@ -115,7 +116,6 @@ private TextTemplatePart ParseMultilineTemplate(StreamReader reader, string pare TextTemplatePart template = ParseInlineTemplate(line.Substring(indexOfSpace + 1)); subTemplates.Add(templateName, template); templateParts.Add(template); - templateParts.Add(Environment.NewLine); continue; } else if (line.EndsWith(TemplateStartSuffix)) @@ -126,15 +126,18 @@ private TextTemplatePart ParseMultilineTemplate(StreamReader reader, string pare TextTemplatePart template = ParseMultilineTemplate(reader, templateName); subTemplates.Add(templateName, template); templateParts.Add(template); + } + else + { + ParseLineForTokens(line, templateParts, subTokens); templateParts.Add(Environment.NewLine); } } else { ParseLineForTokens(line, templateParts, subTokens); + templateParts.Add(Environment.NewLine); } - - templateParts.Add(Environment.NewLine); } return new TextTemplatePart(templateParts, subTokens, subTemplates); } diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs index d3122b6..11bce3f 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Text/TextTemplatePart.cs @@ -63,8 +63,6 @@ internal void Write(StreamWriter writer, TemplateReplacementSet replacementSet) writer.Write(part); } } - - writer.WriteLine(); } } } diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs index b72bff0..28788aa 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlFileTemplate.cs @@ -22,7 +22,7 @@ public XmlFileTemplate(FileInfo templateFile) : base(templateFile) protected override void Parse() { - document = XDocument.Load(templateFile.FullName); + document = XDocument.Load(templateFile.FullName, LoadOptions.PreserveWhitespace); rootPart = new XMLTemplatePart(document.Root); rootPart.Parse(); @@ -32,7 +32,7 @@ protected override void Parse() public override void Write(string path, TemplateReplacementSet replacementSet) { using (StreamWriter writer = new StreamWriter(path)) - using (XmlTemplateWriter xmlWriter = new XmlTemplateWriter(writer, replacementSet) { Formatting = Formatting.Indented, IndentChar = ' ', Indentation = 4, Namespaces = false }) + using (XmlTemplateWriter xmlWriter = new XmlTemplateWriter(writer, replacementSet)) { rootPart.Write(xmlWriter); } diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs index df1763b..2071cbe 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/Xml/XmlTemplateWriter.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. #if UNITY_EDITOR +using System; using System.IO; using System.Xml; @@ -12,14 +13,32 @@ namespace Microsoft.Build.Unity.ProjectGeneration.Templates.Xml /// internal class XmlTemplateWriter : XmlTextWriter { + private readonly XmlWriterSettings settings = new XmlWriterSettings() + { + NewLineChars = Environment.NewLine, + Indent = true, + IndentChars = " " + }; + public TemplateReplacementSet ReplacementSet { get; set; } public TextWriter Writer { get; } + public override XmlWriterSettings Settings => settings; + internal XmlTemplateWriter(TextWriter w, TemplateReplacementSet replacementSet) : base(w) { Writer = w; ReplacementSet = replacementSet; + + Formatting = Formatting.Indented; + Indentation = 4; + Namespaces = false; + } + + public override void WriteComment(string text) + { + base.WriteComment(text); } } } diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs index ce69709..6d70f64 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs @@ -16,7 +16,7 @@ namespace Microsoft.Build.Unity.ProjectGeneration /// /// A helper class to parse the state of the current Unity project. /// - public class UnityProjectInfo + public class UnityProjectInfo : IDisposable { /// /// These package references aren't actual packages it appears, manually labeling them for exclusion. @@ -34,21 +34,36 @@ public class UnityProjectInfo /// /// Gets the available platforms for this Unity project. /// - internal IEnumerable AvailablePlatforms { get; } + public IReadOnlyCollection AvailablePlatforms { get; } + + /// + /// Gets the special editor platform. + /// + public CompilationPlatformInfo EditorPlatform { get; } + + /// + /// Gets the current player platform. + /// + public CompilationPlatformInfo CurrentPlayerPlatform { get; } /// /// Gets all the parsed CSProjects for this Unity project. /// - public IReadOnlyDictionary CSProjects { get; } + public IReadOnlyDictionary CSProjects { get; private set; } /// /// Gets all the parsed DLLs for this Unity project. /// - public IReadOnlyCollection Plugins { get; } + public IReadOnlyCollection Plugins { get; private set; } - public UnityProjectInfo(IEnumerable availablePlatforms) + public UnityProjectInfo(HashSet supportedBuildTargets) { - AvailablePlatforms = availablePlatforms; + AvailablePlatforms = new ReadOnlyCollection(CompilationPipeline.GetAssemblyDefinitionPlatforms() + .Where(t => supportedBuildTargets.Contains(t.BuildTarget)) + .Select(CompilationPlatformInfo.GetCompilationPlatform) + .OrderBy(t => t.Name).ToList()); + + EditorPlatform = CompilationPlatformInfo.GetEditorPlatform(); UnityProjectName = Application.productName; @@ -57,6 +72,19 @@ public UnityProjectInfo(IEnumerable availablePlatforms) UnityProjectName = "UnityProject"; } + RefreshPlugins(); + RefreshProjects(); + + CurrentPlayerPlatform = AvailablePlatforms.First(t => t.BuildTarget == EditorUserBuildSettings.activeBuildTarget); + } + + public void Dispose() + { + // This will be used soon + } + + public void RefreshPlugins() + { Plugins = new ReadOnlyCollection(ScanForPluginDLLs()); foreach (PluginAssemblyInfo plugin in Plugins) @@ -67,6 +95,11 @@ public UnityProjectInfo(IEnumerable availablePlatforms) } } + RefreshProjects(); + } + + public void RefreshProjects() + { CSProjects = new ReadOnlyDictionary(CreateUnityProjects()); } diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs index e6452ef..05ed7bb 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs @@ -68,15 +68,9 @@ public static class Utilities public static string PackagesPath { get; } = Path.Combine(ProjectPath, PackagesFolderName); - public static string AssetPath { get; } + public static string AssetPath { get; } = Path.GetFullPath(Application.dataPath); - public static string BuiltInPackagesPath { get; } - - static Utilities() - { - AssetPath = Path.GetFullPath(Application.dataPath); - BuiltInPackagesPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(EditorApplication.applicationPath), BuiltInPackagesRelativePath)); - } + public static string BuiltInPackagesPath { get; } = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(EditorApplication.applicationPath), BuiltInPackagesRelativePath)); /// /// Converts an assets relative path to an absolute path. @@ -159,7 +153,7 @@ public static bool TryGetGuidForAsset(FileInfo assetPath, out Guid guid) /// /// The asset file. /// The if valid; throws an exception otherwise. - public static AssetLocation GetAssetLocation(FileInfo assetFile) + public static AssetLocation GetAssetLocation(FileSystemInfo assetFile) { string absolutePath = Path.GetFullPath(assetFile.FullName); @@ -391,7 +385,7 @@ public static void EnsureCleanDirectory(string path) DeleteDirectory(path, true); } - if (!TryIOWithRetries(() => Directory.CreateDirectory(path), 5, TimeSpan.FromMilliseconds(100))) + if (!TryIOWithRetries(() => Directory.CreateDirectory(path), 5, TimeSpan.FromMilliseconds(30))) { throw new InvalidOperationException($"Failed to create the directory at '{path}'."); } From aa9984d719483b90d0f934f499aee9ff03223c5e Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Wed, 6 Nov 2019 10:28:45 -0800 Subject: [PATCH 07/19] Simple NuGet Dependency Sample (#46) * Udpating the sample to be a simple nuget dependency * Added Readme for the simple nuget package sample --- .../Project.Unity/Assets/Component1.meta | 8 --- .../Assets/Component1/Component1.asmdef | 3 -- .../Assets/Component1/Component1.asmdef.meta | 7 --- .../Assets/Component1/Component1Type.cs | 18 ------- .../Assets/Component1/Component1Type.cs.meta | 11 ---- .../Project.Unity/Assets/Component2.meta | 8 --- .../Assets/Component2/Component2.asmdef | 14 ----- .../Assets/Component2/Component2.asmdef.meta | 7 --- .../Assets/Component2/Component2Type.cs | 23 -------- .../Assets/Component2/Component2Type.cs.meta | 11 ---- .../Assets/Component2/Nested.meta | 8 --- .../Assets/Component2/Nested/Nested.asmdef | 3 -- .../Component2/Nested/Nested.asmdef.meta | 7 --- .../Assets/Component2/Nested/NestedType.cs | 18 ------- .../Component2/Nested/NestedType.cs.meta | 11 ---- Samples/ExternalDependencies/README.md | 3 -- .../.gitignore | 0 .../Assets/NewtonsoftDependency.meta | 0 .../Assets/NewtonsoftDependency/.gitignore | 0 .../NewtonsoftDependency.csproj | 4 +- .../NewtonsoftDependency.csproj.meta | 0 .../Assets/NewtonsoftDependency}/NuGet.config | 0 .../NewtonsoftDependency/NuGet.config.meta | 32 +++++++++++ .../Assets/NonComponentType.cs | 0 .../Assets/NonComponentType.cs.meta | 0 .../Assets/Scenes.meta | 0 .../Assets/Scenes/UseJson.unity} | 0 .../Assets/Scenes/UseJson.unity.meta} | 0 .../Packages/manifest.json | 2 +- .../ProjectSettings/AudioManager.asset | 0 .../ProjectSettings/ClusterInputManager.asset | 0 .../ProjectSettings/DynamicsManager.asset | 0 .../ProjectSettings/EditorBuildSettings.asset | 0 .../ProjectSettings/EditorSettings.asset | 0 .../ProjectSettings/GraphicsSettings.asset | 0 .../ProjectSettings/InputManager.asset | 0 .../ProjectSettings/NavMeshAreas.asset | 0 .../ProjectSettings/NetworkManager.asset | 0 .../ProjectSettings/Physics2DSettings.asset | 0 .../ProjectSettings/PresetManager.asset | 0 .../ProjectSettings/ProjectSettings.asset | 0 .../ProjectSettings/ProjectVersion.txt | 0 .../ProjectSettings/QualitySettings.asset | 0 .../ProjectSettings/TagManager.asset | 0 .../ProjectSettings/TimeManager.asset | 0 .../UnityConnectSettings.asset | 0 .../ProjectSettings/VFXManager.asset | 0 Samples/SimpleNuGetDependency.Unity/README.md | 50 ++++++++++++++++++ .../docs/CSProjectContents.png | Bin 0 -> 157496 bytes 49 files changed, 84 insertions(+), 164 deletions(-) delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1.meta delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef.meta delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs.meta delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2.meta delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef.meta delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs.meta delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested.meta delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef.meta delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs delete mode 100644 Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs.meta delete mode 100644 Samples/ExternalDependencies/README.md rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/.gitignore (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/Assets/NewtonsoftDependency.meta (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/Assets/NewtonsoftDependency/.gitignore (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj (98%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta (100%) rename Samples/{ExternalDependencies => SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency}/NuGet.config (100%) create mode 100644 Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NuGet.config.meta rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/Assets/NonComponentType.cs (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/Assets/NonComponentType.cs.meta (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/Assets/Scenes.meta (100%) rename Samples/{ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity => SimpleNuGetDependency.Unity/Assets/Scenes/UseJson.unity} (100%) rename Samples/{ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity.meta => SimpleNuGetDependency.Unity/Assets/Scenes/UseJson.unity.meta} (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/Packages/manifest.json (92%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/AudioManager.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/ClusterInputManager.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/DynamicsManager.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/EditorBuildSettings.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/EditorSettings.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/GraphicsSettings.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/InputManager.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/NavMeshAreas.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/NetworkManager.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/Physics2DSettings.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/PresetManager.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/ProjectSettings.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/ProjectVersion.txt (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/QualitySettings.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/TagManager.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/TimeManager.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/UnityConnectSettings.asset (100%) rename Samples/{ExternalDependencies/Project.Unity => SimpleNuGetDependency.Unity}/ProjectSettings/VFXManager.asset (100%) create mode 100644 Samples/SimpleNuGetDependency.Unity/README.md create mode 100644 Samples/SimpleNuGetDependency.Unity/docs/CSProjectContents.png diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component1.meta deleted file mode 100644 index 2221dde..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component1.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9844e937779e6064094d9db36f0be68e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef deleted file mode 100644 index f5b3ed1..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "Component1" -} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef.meta deleted file mode 100644 index f1fdc98..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 5f8add30801bb374783bd76b2b9c3cf1 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs deleted file mode 100644 index ea88a65..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class Component1Type : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs.meta deleted file mode 100644 index 3259c94..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component1/Component1Type.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 95e0dd9925095ec40b1c74297b8ac3e7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2.meta deleted file mode 100644 index 8b99bdd..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4ce2c23baf798b241ba8e6f8c6dd64f5 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef deleted file mode 100644 index 776268e..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "Component2", - "references": [ - "Microsoft.MSBuildForUnity.ProjectGenerator" - ], - "optionalUnityReferences": [], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [] -} \ No newline at end of file diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef.meta deleted file mode 100644 index e05c7ab..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 707c9f565b91bc4489f9788956eb033c -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs deleted file mode 100644 index 31770ca..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs +++ /dev/null @@ -1,23 +0,0 @@ -#if UNITY_EDITOR -using Microsoft.Build.Unity.ProjectGeneration; -#endif -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class Component2Type : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { -#if UNITY_EDITOR - MSBuildTools.GenerateSDKProjects(); -#endif - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs.meta deleted file mode 100644 index d325a92..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Component2Type.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e0239bf7fc5d0364aa8ca09615b4765e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested.meta deleted file mode 100644 index f1226ca..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 68c737313f5db654095c169c7dfbfc76 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef deleted file mode 100644 index 3812c74..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "Nested" -} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef.meta deleted file mode 100644 index 949a35c..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/Nested.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 36f8303a8a5d1bd4b99ef1e7ebe338fb -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs deleted file mode 100644 index 6de0b37..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class Nested : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs.meta b/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs.meta deleted file mode 100644 index df236b3..0000000 --- a/Samples/ExternalDependencies/Project.Unity/Assets/Component2/Nested/NestedType.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4f7d027e7a445d3489ec8ff1ce730e44 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Samples/ExternalDependencies/README.md b/Samples/ExternalDependencies/README.md deleted file mode 100644 index 50e44f6..0000000 --- a/Samples/ExternalDependencies/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# External Dependencies Sample - -This sample shows how Unity project can establish direct dependencies on external C# projects and NuGet packages and have it all resolved correctly. \ No newline at end of file diff --git a/Samples/ExternalDependencies/Project.Unity/.gitignore b/Samples/SimpleNuGetDependency.Unity/.gitignore similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/.gitignore rename to Samples/SimpleNuGetDependency.Unity/.gitignore diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency.meta b/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency.meta similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency.meta rename to Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency.meta diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/.gitignore b/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/.gitignore similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/.gitignore rename to Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/.gitignore diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj b/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj similarity index 98% rename from Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj rename to Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj index 8ad6521..31b2884 100644 --- a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj +++ b/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj @@ -28,8 +28,6 @@ - - - + \ No newline at end of file diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta b/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta rename to Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NewtonsoftDependency.csproj.meta diff --git a/Samples/ExternalDependencies/NuGet.config b/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NuGet.config similarity index 100% rename from Samples/ExternalDependencies/NuGet.config rename to Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NuGet.config diff --git a/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NuGet.config.meta b/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NuGet.config.meta new file mode 100644 index 0000000..f9df2af --- /dev/null +++ b/Samples/SimpleNuGetDependency.Unity/Assets/NewtonsoftDependency/NuGet.config.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 37489575aed347a4087be28eba41a9d2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs b/Samples/SimpleNuGetDependency.Unity/Assets/NonComponentType.cs similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs rename to Samples/SimpleNuGetDependency.Unity/Assets/NonComponentType.cs diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs.meta b/Samples/SimpleNuGetDependency.Unity/Assets/NonComponentType.cs.meta similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/NonComponentType.cs.meta rename to Samples/SimpleNuGetDependency.Unity/Assets/NonComponentType.cs.meta diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Scenes.meta b/Samples/SimpleNuGetDependency.Unity/Assets/Scenes.meta similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/Scenes.meta rename to Samples/SimpleNuGetDependency.Unity/Assets/Scenes.meta diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity b/Samples/SimpleNuGetDependency.Unity/Assets/Scenes/UseJson.unity similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity rename to Samples/SimpleNuGetDependency.Unity/Assets/Scenes/UseJson.unity diff --git a/Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity.meta b/Samples/SimpleNuGetDependency.Unity/Assets/Scenes/UseJson.unity.meta similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/Assets/Scenes/SampleScene.unity.meta rename to Samples/SimpleNuGetDependency.Unity/Assets/Scenes/UseJson.unity.meta diff --git a/Samples/ExternalDependencies/Project.Unity/Packages/manifest.json b/Samples/SimpleNuGetDependency.Unity/Packages/manifest.json similarity index 92% rename from Samples/ExternalDependencies/Project.Unity/Packages/manifest.json rename to Samples/SimpleNuGetDependency.Unity/Packages/manifest.json index 9b3c9af..b9c3d94 100644 --- a/Samples/ExternalDependencies/Project.Unity/Packages/manifest.json +++ b/Samples/SimpleNuGetDependency.Unity/Packages/manifest.json @@ -36,6 +36,6 @@ "com.unity.modules.vr": "1.0.0", "com.unity.modules.wind": "1.0.0", "com.unity.modules.xr": "1.0.0", - "com.microsoft.msbuildforunity": "file:../../../../Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity" + "com.microsoft.msbuildforunity": "file:../../../Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity" } } diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/AudioManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/AudioManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/AudioManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/AudioManager.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ClusterInputManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/ClusterInputManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/ClusterInputManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/ClusterInputManager.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/DynamicsManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/DynamicsManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/DynamicsManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/DynamicsManager.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorBuildSettings.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/EditorBuildSettings.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorBuildSettings.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/EditorBuildSettings.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorSettings.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/EditorSettings.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/EditorSettings.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/EditorSettings.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/GraphicsSettings.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/GraphicsSettings.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/GraphicsSettings.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/GraphicsSettings.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/InputManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/InputManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/InputManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/InputManager.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/NavMeshAreas.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/NavMeshAreas.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/NavMeshAreas.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/NavMeshAreas.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/NetworkManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/NetworkManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/NetworkManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/NetworkManager.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/Physics2DSettings.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/Physics2DSettings.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/Physics2DSettings.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/Physics2DSettings.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/PresetManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/PresetManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/PresetManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/PresetManager.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/ProjectSettings.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectSettings.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/ProjectSettings.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectVersion.txt b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/ProjectVersion.txt similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/ProjectVersion.txt rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/ProjectVersion.txt diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/QualitySettings.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/QualitySettings.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/QualitySettings.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/QualitySettings.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/TagManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/TagManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/TagManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/TagManager.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/TimeManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/TimeManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/TimeManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/TimeManager.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/UnityConnectSettings.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/UnityConnectSettings.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/UnityConnectSettings.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/UnityConnectSettings.asset diff --git a/Samples/ExternalDependencies/Project.Unity/ProjectSettings/VFXManager.asset b/Samples/SimpleNuGetDependency.Unity/ProjectSettings/VFXManager.asset similarity index 100% rename from Samples/ExternalDependencies/Project.Unity/ProjectSettings/VFXManager.asset rename to Samples/SimpleNuGetDependency.Unity/ProjectSettings/VFXManager.asset diff --git a/Samples/SimpleNuGetDependency.Unity/README.md b/Samples/SimpleNuGetDependency.Unity/README.md new file mode 100644 index 0000000..9153994 --- /dev/null +++ b/Samples/SimpleNuGetDependency.Unity/README.md @@ -0,0 +1,50 @@ +# Simple NuGet Dependency + +This sample shows how to make use of MSBuildForUnity to embed a NuGet dependency into your project with minimal other impact on your project. + +## Declaring the Dependency + +In order for you to declare the dependency, you need several key things: + +- A folder for your dependency files +- A C# project file (.csproj) file that specifies the dependency. +- A .gitignore that ensures only the necessary files are seen by git. +- **Temporary:** A NuGet.config that contains the special feed of MSBuildForUnity NuGet package. This requirement will go away soon. + +This sample has it set up under the following location `Assets\NewtonSoftDependency`. + +### C# Project File Structure + +The project file structure has several required parts to it: + +- The `MSBuildForUnity.Common.props` import (if found). + - This file contains some core properties that we require. +- Conditional declaration of `TargetFramework` that depends on whether `UnityCurrentTargetFramework` property is available from above import. + - The target framework is what determines which DLL of a NuGet package is pulled in. MSBuildForUnity keeps the property up to date in `MSBuildForUnity.Common.props`. +- Setting the `BaseIntermediateOutputPath` (object directory) to be invisible by Unity, by prefixing it with a '.' +- Naming the `OutputPath` that will be seen by Unity, this is where the NuGet output will be dumped into. +- Package reference to `MSBuildForUnity` NuGet package that enables the correct resolution of dependencies. +- `Sdk.props` and `Sdk.targets` import that doesn't produce a dll (`Microsoft.Build.NoTargets`). + +The `Assets\NewtonSoftDependency\NewtonSoftDependency.csproj` contains all of this, plus the NuGet reference to "NewtonSoft.Json" and is a total of 33 lines long. + +![C# Project File Contents](docs\CSProjectContents.png) + +## The Process + +When MSBuildForUnity is brought into the project, the following happens: + +1. Generates the small `MSBuildForUnity.Common.props` file. +2. Auto-processes all of the .csproj files in the repository, and builds them. + +## Question & Answer + +### Referencing External C# Projects + +It is possible to reference external C# projects in the same manner as the NuGet packages. As long as the .csproj file contains the structure described above, you can include other tasks and references in it. + +### Changing Target Scripting Subset + +If you update the Unity project form .NET 4.6 to .NET Standard 2.0, the `MSBuildForUnity.Common.props` will be updated to reflect the change, and the project would get re-built. + +> Today the project won't be cleaned, and the older NuGet artifacts will still be on disk. You would either have to do a `git clean` or manually delete that folder. diff --git a/Samples/SimpleNuGetDependency.Unity/docs/CSProjectContents.png b/Samples/SimpleNuGetDependency.Unity/docs/CSProjectContents.png new file mode 100644 index 0000000000000000000000000000000000000000..b003c165044008b69b8186895748c50edca4e1cc GIT binary patch literal 157496 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 O4ox*3)iQ`x=)V9OCnZ4u literal 0 HcmV?d00001 From 4853879c68dc94f409a68592a1141d4f8dfcca39 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 14 Nov 2019 12:48:12 -0800 Subject: [PATCH 08/19] Integrated Dependencies (#49) * Updating project generator to support Dependencies project * Checking in initial version of the sample * Exclude dependencies folder from participating in contributing plugins to the csproject files generated * Added the generated projects that can be checked-in * Made use of JSOn * Trying to get external reference to be included * Fixed up most of the things needed to make supported integrated dependencies * More fixes * Completed the Readme.md * Fixing switching platforms * Updated documentaiton * Updating project generator to support Dependencies project * Checking in initial version of the sample * Exclude dependencies folder from participating in contributing plugins to the csproject files generated * Added the generated projects that can be checked-in * Made use of JSOn * Sign dlls and package (#39) This change updates the NuGet package build to sign MSBuildForUnity.dll as well as the NuGet package itself. Break the existing build step into two separate steps (build and package) Add a step for signing binaries between building and packaging Add a step for signing the package * Add NuGet package badge and link to readme (#41) * Trying to get external reference to be included * Sign third party components (#47) The primary change here is to sign third party components (Newtonsoft.Json and Mono.Cecil) and include them in the NuGet package: - Update MSBuildForUnity.csproj to ensure third party components are copied to the output directory (so we can sign them), and make sure they are then packaged up with the NuGet package. - Update the code signing steps to sign the third party components. I also made a couple related changes:: - Replace the Mono.Cecil submodule with the actual NuGet package (an updated package was published a few days ago with the bug fixes we needed). - Add the ComponentGovernanceComponentDetection step to check for third party components with any known problems (we shouldn't ship such components). * Move GenerateAssetId into a custom C# task, since CodeTaskFactory is not compatible with dotnet (#48) * Fixed up most of the things needed to make supported integrated dependencies * More fixes * Completed the Readme.md * Fixing switching platforms * Updated documentaiton * Updating project generator to support Dependencies project * Checking in initial version of the sample * Exclude dependencies folder from participating in contributing plugins to the csproject files generated * Added the generated projects that can be checked-in * Made use of JSOn * Trying to get external reference to be included * rebase * Sign third party components (#47) The primary change here is to sign third party components (Newtonsoft.Json and Mono.Cecil) and include them in the NuGet package: - Update MSBuildForUnity.csproj to ensure third party components are copied to the output directory (so we can sign them), and make sure they are then packaged up with the NuGet package. - Update the code signing steps to sign the third party components. I also made a couple related changes:: - Replace the Mono.Cecil submodule with the actual NuGet package (an updated package was published a few days ago with the bug fixes we needed). - Add the ComponentGovernanceComponentDetection step to check for third party components with any known problems (we shouldn't ship such components). * Fixed up most of the things needed to make supported integrated dependencies * More fixes * Completed the Readme.md * Fixing switching platforms * Updated documentaiton * Updating project generator to support Dependencies project * Checking in initial version of the sample * Added the generated projects that can be checked-in * Trying to get external reference to be included * Fixed up most of the things needed to make supported integrated dependencies * More fixes * Completed the Readme.md * Fixing switching platforms * Updated documentaiton * minor fixes * One more change * Responding to Kurtis' comments --- .../IntegratedDependencies.Unity/.gitignore | 70 ++ .../Assets/Assembly-CSharp.msb4u.csproj | 36 + .../Assets/Assembly-CSharp.msb4u.csproj.meta | 12 + .../Assets/Dependencies.meta | 8 + .../Assets/Dependencies.msb4u.csproj | 40 ++ .../Assets/Dependencies.msb4u.csproj.meta | 12 + .../Assets/NonComponentType.cs | 13 + .../Assets/NonComponentType.cs.meta | 11 + .../Assets/NuGet.config | 11 + .../Assets/NuGet.config.meta | 32 + .../Assets/Project.Unity.msb4u.sln | 219 ++++++ .../Assets/Project.Unity.msb4u.sln.meta | 12 + .../Assets/WSASpecific.meta | 8 + .../Assets/WSASpecific/Component.WSA.asmdef | 17 + .../WSASpecific/Component.WSA.asmdef.meta | 7 + .../WSASpecific/Component.WSA.msb4u.csproj | 38 ++ .../Component.WSA.msb4u.csproj.meta | 12 + .../Assets/WSASpecific/WSAComponentType.cs | 14 + .../WSASpecific/WSAComponentType.cs.meta | 11 + .../External/.gitignore | 5 + .../CommonLibrary.WSA.csproj | 11 + .../CommonLibrary.WSA/WSAHelperComponent.cs | 13 + .../External/CommonLibrary.sln | 31 + .../External/CommonLibrary/CommonComponent.cs | 13 + .../CommonLibrary/CommonLibrary.csproj | 6 + .../MSBuild/settings.json | 1 + .../Packages/manifest.json | 41 ++ .../ProjectSettings/AudioManager.asset | 17 + .../ProjectSettings/ClusterInputManager.asset | 6 + .../ProjectSettings/DynamicsManager.asset | 30 + .../ProjectSettings/EditorBuildSettings.asset | 8 + .../ProjectSettings/EditorSettings.asset | 21 + .../ProjectSettings/GraphicsSettings.asset | 62 ++ .../ProjectSettings/InputManager.asset | 295 ++++++++ .../ProjectSettings/NavMeshAreas.asset | 91 +++ .../ProjectSettings/NetworkManager.asset | 8 + .../ProjectSettings/Physics2DSettings.asset | 38 ++ .../ProjectSettings/PresetManager.asset | 27 + .../ProjectSettings/ProjectSettings.asset | 630 ++++++++++++++++++ .../ProjectSettings/ProjectVersion.txt | 1 + .../ProjectSettings/QualitySettings.asset | 190 ++++++ .../ProjectSettings/TagManager.asset | 43 ++ .../ProjectSettings/TimeManager.asset | 9 + .../UnityConnectSettings.asset | 34 + .../ProjectSettings/VFXManager.asset | 11 + .../IntegratedDependencies.Unity/README.md | 66 ++ .../docs/Assembly-CSharpGeneratedProject.png | Bin 0 -> 189215 bytes .../docs/CSProjectBuild.png | Bin 0 -> 54421 bytes .../docs/ProjectGenerationEnabled.png | Bin 0 -> 42403 bytes .../docs/UWPAsmDef.png | Bin 0 -> 50223 bytes .../docs/UWPGeneratedProject.png | Bin 0 -> 180131 bytes .../Assets/NonComponentType.cs | 8 +- .../MSBuildProjectBuilderEditor.cs | 17 +- .../ProjectBuilder/MSBuildProjectReference.cs | 27 +- .../BuildProjects.proj.template | 4 +- ...ependenciesProjectTemplate.csproj.template | 40 ++ ...enciesProjectTemplate.csproj.template.meta | 7 + ...pendenciesProjectTemplate.g.props.template | 40 ++ ...nciesProjectTemplate.g.props.template.meta | 7 + ...ndenciesProjectTemplate.g.targets.template | 7 + ...iesProjectTemplate.g.targets.template.meta | 7 + .../SDKProjectTemplate.g.targets.template | 9 +- .../WSA.Player.IL2CPP.props.template | 7 +- .../WSA.Player.Net.props.template | 7 +- ...ildForUnity.ProjectGenerator.Editor.asmdef | 4 +- .../Scripts/Exporters/IProjectExporter.cs | 2 +- .../Exporters/TemplatedProjectExporter.cs | 97 ++- .../ProjectGenerator/Scripts/MSBuildTools.cs | 64 +- .../Scripts/Templates/TemplateFiles.cs | 21 + .../Scripts/UnityProjectInfo.cs | 18 +- 70 files changed, 2605 insertions(+), 79 deletions(-) create mode 100644 Samples/IntegratedDependencies.Unity/.gitignore create mode 100644 Samples/IntegratedDependencies.Unity/Assets/Assembly-CSharp.msb4u.csproj create mode 100644 Samples/IntegratedDependencies.Unity/Assets/Assembly-CSharp.msb4u.csproj.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/Dependencies.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj create mode 100644 Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/NonComponentType.cs create mode 100644 Samples/IntegratedDependencies.Unity/Assets/NonComponentType.cs.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/NuGet.config create mode 100644 Samples/IntegratedDependencies.Unity/Assets/NuGet.config.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln create mode 100644 Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/WSASpecific.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.asmdef create mode 100644 Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.asmdef.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.msb4u.csproj create mode 100644 Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.msb4u.csproj.meta create mode 100644 Samples/IntegratedDependencies.Unity/Assets/WSASpecific/WSAComponentType.cs create mode 100644 Samples/IntegratedDependencies.Unity/Assets/WSASpecific/WSAComponentType.cs.meta create mode 100644 Samples/IntegratedDependencies.Unity/External/.gitignore create mode 100644 Samples/IntegratedDependencies.Unity/External/CommonLibrary.WSA/CommonLibrary.WSA.csproj create mode 100644 Samples/IntegratedDependencies.Unity/External/CommonLibrary.WSA/WSAHelperComponent.cs create mode 100644 Samples/IntegratedDependencies.Unity/External/CommonLibrary.sln create mode 100644 Samples/IntegratedDependencies.Unity/External/CommonLibrary/CommonComponent.cs create mode 100644 Samples/IntegratedDependencies.Unity/External/CommonLibrary/CommonLibrary.csproj create mode 100644 Samples/IntegratedDependencies.Unity/MSBuild/settings.json create mode 100644 Samples/IntegratedDependencies.Unity/Packages/manifest.json create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/AudioManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/ClusterInputManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/DynamicsManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/EditorBuildSettings.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/EditorSettings.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/GraphicsSettings.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/InputManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/NavMeshAreas.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/NetworkManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/Physics2DSettings.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/PresetManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/ProjectSettings.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/ProjectVersion.txt create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/QualitySettings.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/TagManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/TimeManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/UnityConnectSettings.asset create mode 100644 Samples/IntegratedDependencies.Unity/ProjectSettings/VFXManager.asset create mode 100644 Samples/IntegratedDependencies.Unity/README.md create mode 100644 Samples/IntegratedDependencies.Unity/docs/Assembly-CSharpGeneratedProject.png create mode 100644 Samples/IntegratedDependencies.Unity/docs/CSProjectBuild.png create mode 100644 Samples/IntegratedDependencies.Unity/docs/ProjectGenerationEnabled.png create mode 100644 Samples/IntegratedDependencies.Unity/docs/UWPAsmDef.png create mode 100644 Samples/IntegratedDependencies.Unity/docs/UWPGeneratedProject.png create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.props.template create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.props.template.meta create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.targets.template create mode 100644 Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.targets.template.meta diff --git a/Samples/IntegratedDependencies.Unity/.gitignore b/Samples/IntegratedDependencies.Unity/.gitignore new file mode 100644 index 0000000..7ca5aee --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/.gitignore @@ -0,0 +1,70 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Mm]emoryCaptures/ + +# Never ignore Asset meta data +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties + +# Custom MSBuildForUnity Project Related ignore entries +/MSBuild/* +!/MSBuild/Publish/ +!/MSBuild/settings.json +/MSBuild/Publish/**/*.dll +/MSBuild/Publish/**/*.pdb +/MSBuildForUnity.Common.props +!/Assets/**/*.msb4u.* +!/Packages/**/*.msb4u.* +/Assets/Dependencies \ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/Assets/Assembly-CSharp.msb4u.csproj b/Samples/IntegratedDependencies.Unity/Assets/Assembly-CSharp.msb4u.csproj new file mode 100644 index 0000000..2d4e2d3 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/Assembly-CSharp.msb4u.csproj @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/Assets/Assembly-CSharp.msb4u.csproj.meta b/Samples/IntegratedDependencies.Unity/Assets/Assembly-CSharp.msb4u.csproj.meta new file mode 100644 index 0000000..678e419 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/Assembly-CSharp.msb4u.csproj.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8e4524154d1b0c34f9efea280040753c +ScriptedImporter: + fileIDToRecycleName: + 11400000: Assembly-CSharp.msb4u + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 0e4dca1acba66fd478b3854f09a32ec7, type: 3} + buildEngine: 0 + profiles: [] diff --git a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.meta b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.meta new file mode 100644 index 0000000..0312feb --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 032105be82167f14b8fa390a9665ea5f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj new file mode 100644 index 0000000..cc33d76 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj.meta b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj.meta new file mode 100644 index 0000000..aa4eca0 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3cfffcf6ca567fd44a9d881a77e8b97f +ScriptedImporter: + fileIDToRecycleName: + 11400000: Dependencies.msb4u + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 0e4dca1acba66fd478b3854f09a32ec7, type: 3} + buildEngine: 0 + profiles: [] diff --git a/Samples/IntegratedDependencies.Unity/Assets/NonComponentType.cs b/Samples/IntegratedDependencies.Unity/Assets/NonComponentType.cs new file mode 100644 index 0000000..970e212 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/NonComponentType.cs @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using CommonLibrary; +using UnityEngine; + +public class NonComponentType : MonoBehaviour +{ + private void Start() + { + Debug.Log(new CommonComponent().GetData()); + } +} diff --git a/Samples/IntegratedDependencies.Unity/Assets/NonComponentType.cs.meta b/Samples/IntegratedDependencies.Unity/Assets/NonComponentType.cs.meta new file mode 100644 index 0000000..de2eeac --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/NonComponentType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a89abd2f1d90a4941b98865d066eacb6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/IntegratedDependencies.Unity/Assets/NuGet.config b/Samples/IntegratedDependencies.Unity/Assets/NuGet.config new file mode 100644 index 0000000..f24e599 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/NuGet.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/Assets/NuGet.config.meta b/Samples/IntegratedDependencies.Unity/Assets/NuGet.config.meta new file mode 100644 index 0000000..f9df2af --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/NuGet.config.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 37489575aed347a4087be28eba41a9d2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln b/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln new file mode 100644 index 0000000..5be0f96 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln @@ -0,0 +1,219 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.539 +MinimumVisualStudioVersion = 10.0.40219.1 +# This file is generated by MSBuildForUnity, it will get updated when the assembly definitions change. +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Component.WSA", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\Assets\WSASpecific\Component.WSA.msb4u.csproj", "{BB41A40A-FD6B-AD74-0865-83AB52977BDC}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.TextMeshPro", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.TextMeshPro.msb4u.csproj", "{6055BE8E-BEFD-69E4-8B49-212B09B47B2F}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.PackageManagerUI.Editor", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.PackageManagerUI.Editor.msb4u.csproj", "{15A615C7-33AA-2409-09FE-0B28B0D5143C}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.CollabProxy.Editor", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.CollabProxy.Editor.msb4u.csproj", "{645165C8-1694-74BF-BBEB-8FB0BCFD26F5}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSBuildForUnity", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\MSBuildForUnity.msb4u.csproj", "{0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.Analytics.DataPrivacy", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.Analytics.DataPrivacy.msb4u.csproj", "{0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.TextMeshPro.Editor", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.TextMeshPro.Editor.msb4u.csproj", "{6546D776-5B41-65B4-0850-B3667F981C26}" + ProjectSection(ProjectDependencies) = postProject + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} = {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\Assets\Assembly-CSharp.msb4u.csproj", "{48D939EA-0E9B-462A-804A-F79457D08B95}" + ProjectSection(ProjectDependencies) = postProject + {6546D776-5B41-65B4-0850-B3667F981C26} = {6546D776-5B41-65B4-0850-B3667F981C26} + {15A615C7-33AA-2409-09FE-0B28B0D5143C} = {15A615C7-33AA-2409-09FE-0B28B0D5143C} + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5} = {645165C8-1694-74BF-BBEB-8FB0BCFD26F5} + {BB41A40A-FD6B-AD74-0865-83AB52977BDC} = {BB41A40A-FD6B-AD74-0865-83AB52977BDC} + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD} = {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD} + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} = {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E} = {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E} + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dependencies", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\Assets\Dependencies.msb4u.csproj", "{6AEB67F2-4579-4537-A6BD-88861A8525C2}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Imported Packages", "Imported Packages", "{E17FC267-FD7D-405C-A3DF-F405744E3097}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External Packages", "External Packages", "{96FBE624-B6A1-426C-827D-FC68411DA48D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + InEditor|Android = InEditor|Android + Player|Android = Player|Android + InEditor|iOS = InEditor|iOS + Player|iOS = Player|iOS + InEditor|WindowsStandalone32 = InEditor|WindowsStandalone32 + Player|WindowsStandalone32 = Player|WindowsStandalone32 + InEditor|WindowsStandalone64 = InEditor|WindowsStandalone64 + Player|WindowsStandalone64 = Player|WindowsStandalone64 + InEditor|WSA = InEditor|WSA + Player|WSA = Player|WSA + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|Android.ActiveCfg = InEditor|Android + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|iOS.ActiveCfg = InEditor|iOS + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WSA.ActiveCfg = InEditor|WSA + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|Android.ActiveCfg = Player|Android + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|iOS.ActiveCfg = Player|iOS + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|WSA.ActiveCfg = Player|WSA + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|Android.ActiveCfg = InEditor|Android + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|iOS.ActiveCfg = InEditor|iOS + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|WSA.ActiveCfg = InEditor|WSA + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|Android.ActiveCfg = Player|Android + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|iOS.ActiveCfg = Player|iOS + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|WSA.ActiveCfg = Player|WSA + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|Android.ActiveCfg = InEditor|Android + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|iOS.ActiveCfg = InEditor|iOS + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|WSA.ActiveCfg = InEditor|WSA + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.Player|Android.ActiveCfg = Player|Android + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.Player|iOS.ActiveCfg = Player|iOS + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.Player|WSA.ActiveCfg = Player|WSA + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|Android.ActiveCfg = InEditor|Android + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|iOS.ActiveCfg = InEditor|iOS + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|WSA.ActiveCfg = InEditor|WSA + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.Player|Android.ActiveCfg = Player|Android + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.Player|iOS.ActiveCfg = Player|iOS + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.Player|WSA.ActiveCfg = Player|WSA + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|Android.ActiveCfg = InEditor|Android + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|iOS.ActiveCfg = InEditor|iOS + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|WSA.ActiveCfg = InEditor|WSA + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.Player|Android.ActiveCfg = Player|Android + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.Player|iOS.ActiveCfg = Player|iOS + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.Player|WSA.ActiveCfg = Player|WSA + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|Android.ActiveCfg = InEditor|Android + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|iOS.ActiveCfg = InEditor|iOS + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|WSA.ActiveCfg = InEditor|WSA + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|Android.ActiveCfg = Player|Android + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|iOS.ActiveCfg = Player|iOS + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|WSA.ActiveCfg = Player|WSA + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|Android.ActiveCfg = InEditor|Android + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|iOS.ActiveCfg = InEditor|iOS + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WSA.ActiveCfg = InEditor|WSA + {6546D776-5B41-65B4-0850-B3667F981C26}.Player|Android.ActiveCfg = Player|Android + {6546D776-5B41-65B4-0850-B3667F981C26}.Player|iOS.ActiveCfg = Player|iOS + {6546D776-5B41-65B4-0850-B3667F981C26}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {6546D776-5B41-65B4-0850-B3667F981C26}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {6546D776-5B41-65B4-0850-B3667F981C26}.Player|WSA.ActiveCfg = Player|WSA + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|Android.ActiveCfg = InEditor|Android + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|iOS.ActiveCfg = InEditor|iOS + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WSA.ActiveCfg = InEditor|WSA + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|Android.ActiveCfg = Player|Android + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|iOS.ActiveCfg = Player|iOS + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WSA.ActiveCfg = Player|WSA + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|Android.Build.0 = InEditor|Android + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|iOS.Build.0 = InEditor|iOS + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WSA.Build.0 = InEditor|WSA + {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|WSA.Build.0 = Player|WSA + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|Android.Build.0 = InEditor|Android + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|iOS.Build.0 = InEditor|iOS + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|WSA.Build.0 = InEditor|WSA + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|Android.Build.0 = Player|Android + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|iOS.Build.0 = Player|iOS + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|WindowsStandalone32.Build.0 = Player|WindowsStandalone32 + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|WindowsStandalone64.Build.0 = Player|WindowsStandalone64 + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.Player|WSA.Build.0 = Player|WSA + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|Android.Build.0 = InEditor|Android + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|iOS.Build.0 = InEditor|iOS + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {15A615C7-33AA-2409-09FE-0B28B0D5143C}.InEditor|WSA.Build.0 = InEditor|WSA + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|Android.Build.0 = InEditor|Android + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|iOS.Build.0 = InEditor|iOS + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5}.InEditor|WSA.Build.0 = InEditor|WSA + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|Android.Build.0 = InEditor|Android + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|iOS.Build.0 = InEditor|iOS + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}.InEditor|WSA.Build.0 = InEditor|WSA + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|Android.Build.0 = InEditor|Android + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|iOS.Build.0 = InEditor|iOS + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.InEditor|WSA.Build.0 = InEditor|WSA + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|Android.Build.0 = Player|Android + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|iOS.Build.0 = Player|iOS + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|WindowsStandalone32.Build.0 = Player|WindowsStandalone32 + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|WindowsStandalone64.Build.0 = Player|WindowsStandalone64 + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}.Player|WSA.Build.0 = Player|WSA + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|Android.Build.0 = InEditor|Android + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|iOS.Build.0 = InEditor|iOS + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WSA.Build.0 = InEditor|WSA + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|Android.Build.0 = InEditor|Android + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|iOS.Build.0 = InEditor|iOS + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WSA.Build.0 = InEditor|WSA + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|Android.Build.0 = Player|Android + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|iOS.Build.0 = Player|iOS + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WindowsStandalone32.Build.0 = Player|WindowsStandalone32 + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WindowsStandalone64.Build.0 = Player|WindowsStandalone64 + {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WSA.Build.0 = Player|WSA + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} = {E17FC267-FD7D-405C-A3DF-F405744E3097} + {15A615C7-33AA-2409-09FE-0B28B0D5143C} = {E17FC267-FD7D-405C-A3DF-F405744E3097} + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5} = {E17FC267-FD7D-405C-A3DF-F405744E3097} + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E} = {E17FC267-FD7D-405C-A3DF-F405744E3097} + {6546D776-5B41-65B4-0850-B3667F981C26} = {E17FC267-FD7D-405C-A3DF-F405744E3097} + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD} = {96FBE624-B6A1-426C-827D-FC68411DA48D} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {89752EEF-6413-4D53-BA9D-DCA0707F134E} + EndGlobalSection +EndGlobal diff --git a/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln.meta b/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln.meta new file mode 100644 index 0000000..a8222e1 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 085b508f98a26654089bda94512f763b +ScriptedImporter: + fileIDToRecycleName: + 11400000: Project.Unity.msb4u + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 0e4dca1acba66fd478b3854f09a32ec7, type: 3} + buildEngine: 0 + profiles: [] diff --git a/Samples/IntegratedDependencies.Unity/Assets/WSASpecific.meta b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific.meta new file mode 100644 index 0000000..ca24690 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea6c5a3de34aa754a9fbf75354d2b5ee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.asmdef b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.asmdef new file mode 100644 index 0000000..eb80458 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.asmdef @@ -0,0 +1,17 @@ +{ + "name": "Component.WSA", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor", + "WSA" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [ + "UNITY_WSA" + ] +} \ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.asmdef.meta b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.asmdef.meta new file mode 100644 index 0000000..dd7ddfa --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bb41a40afd6bad74086583ab52977bdc +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.msb4u.csproj b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.msb4u.csproj new file mode 100644 index 0000000..1de9bdf --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.msb4u.csproj @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.msb4u.csproj.meta b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.msb4u.csproj.meta new file mode 100644 index 0000000..4a22f53 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/Component.WSA.msb4u.csproj.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2e5c13a26f4f1743961051b27b65513 +ScriptedImporter: + fileIDToRecycleName: + 11400000: Component.WSA.msb4u + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 0e4dca1acba66fd478b3854f09a32ec7, type: 3} + buildEngine: 0 + profiles: [] diff --git a/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/WSAComponentType.cs b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/WSAComponentType.cs new file mode 100644 index 0000000..34c955c --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/WSAComponentType.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using CommonLibrary.WSA; +using UnityEngine; + +public class WSAComponentType : MonoBehaviour +{ + private void Start() + { + Debug.Log(new WSAHelperComponent().GetData()); + Debug.Log(Newtonsoft.Json.JsonConvert.DeserializeObject("{ \"test\" : 1 }")); + } +} diff --git a/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/WSAComponentType.cs.meta b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/WSAComponentType.cs.meta new file mode 100644 index 0000000..abc0ebc --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Assets/WSASpecific/WSAComponentType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e48c3e52ee73e154fb7f5d24f188f18b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/IntegratedDependencies.Unity/External/.gitignore b/Samples/IntegratedDependencies.Unity/External/.gitignore new file mode 100644 index 0000000..082bf34 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/External/.gitignore @@ -0,0 +1,5 @@ +obj/ +bin/ +.vs/ +!*.sln +!*.csproj \ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/External/CommonLibrary.WSA/CommonLibrary.WSA.csproj b/Samples/IntegratedDependencies.Unity/External/CommonLibrary.WSA/CommonLibrary.WSA.csproj new file mode 100644 index 0000000..74c8cc4 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/External/CommonLibrary.WSA/CommonLibrary.WSA.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0;net46 + + + + + + + diff --git a/Samples/IntegratedDependencies.Unity/External/CommonLibrary.WSA/WSAHelperComponent.cs b/Samples/IntegratedDependencies.Unity/External/CommonLibrary.WSA/WSAHelperComponent.cs new file mode 100644 index 0000000..99e766e --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/External/CommonLibrary.WSA/WSAHelperComponent.cs @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +namespace CommonLibrary.WSA +{ + public class WSAHelperComponent : CommonComponent + { + public override string GetData() + { + return "WSA: " + base.GetData(); + } + } +} diff --git a/Samples/IntegratedDependencies.Unity/External/CommonLibrary.sln b/Samples/IntegratedDependencies.Unity/External/CommonLibrary.sln new file mode 100644 index 0000000..7e2b58d --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/External/CommonLibrary.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.902 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommonLibrary", "CommonLibrary\CommonLibrary.csproj", "{4A75EFB3-9858-43A5-9EC0-9809125C4912}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommonLibrary.WSA", "CommonLibrary.WSA\CommonLibrary.WSA.csproj", "{6069636C-EBC4-4CA2-BC5B-9B188BCCF77B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4A75EFB3-9858-43A5-9EC0-9809125C4912}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A75EFB3-9858-43A5-9EC0-9809125C4912}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A75EFB3-9858-43A5-9EC0-9809125C4912}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4A75EFB3-9858-43A5-9EC0-9809125C4912}.Release|Any CPU.Build.0 = Release|Any CPU + {6069636C-EBC4-4CA2-BC5B-9B188BCCF77B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6069636C-EBC4-4CA2-BC5B-9B188BCCF77B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6069636C-EBC4-4CA2-BC5B-9B188BCCF77B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6069636C-EBC4-4CA2-BC5B-9B188BCCF77B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {97A82EB4-C1AE-4266-B8A0-5D420F63DA4B} + EndGlobalSection +EndGlobal diff --git a/Samples/IntegratedDependencies.Unity/External/CommonLibrary/CommonComponent.cs b/Samples/IntegratedDependencies.Unity/External/CommonLibrary/CommonComponent.cs new file mode 100644 index 0000000..32c2e87 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/External/CommonLibrary/CommonComponent.cs @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +namespace CommonLibrary +{ + public class CommonComponent + { + public virtual string GetData() + { + return GetType().FullName; + } + } +} diff --git a/Samples/IntegratedDependencies.Unity/External/CommonLibrary/CommonLibrary.csproj b/Samples/IntegratedDependencies.Unity/External/CommonLibrary/CommonLibrary.csproj new file mode 100644 index 0000000..d9813e3 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/External/CommonLibrary/CommonLibrary.csproj @@ -0,0 +1,6 @@ + + + + netstandard2.0;net46 + + diff --git a/Samples/IntegratedDependencies.Unity/MSBuild/settings.json b/Samples/IntegratedDependencies.Unity/MSBuild/settings.json new file mode 100644 index 0000000..978fcfd --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/MSBuild/settings.json @@ -0,0 +1 @@ +{"autoGenerateEnabled":true} \ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/Packages/manifest.json b/Samples/IntegratedDependencies.Unity/Packages/manifest.json new file mode 100644 index 0000000..b9c3d94 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/Packages/manifest.json @@ -0,0 +1,41 @@ +{ + "dependencies": { + "com.unity.ads": "2.0.8", + "com.unity.analytics": "3.2.2", + "com.unity.collab-proxy": "1.2.15", + "com.unity.package-manager-ui": "2.0.7", + "com.unity.purchasing": "2.0.3", + "com.unity.textmeshpro": "1.4.1", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0", + "com.microsoft.msbuildforunity": "file:../../../Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity" + } +} diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/AudioManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..4f31e74 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/AudioManager.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/ClusterInputManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/DynamicsManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..b3c263d --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/EditorBuildSettings.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..0147887 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: [] + m_configObjects: {} diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/EditorSettings.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..29dea52 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/EditorSettings.asset @@ -0,0 +1,21 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 2 + m_DefaultBehaviorMode: 0 + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd + m_ProjectGenerationRootNamespace: + m_UserGeneratedProjectSuffix: + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/GraphicsSettings.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..cd1c3d6 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,62 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_CustomRenderPipeline: {fileID: 0} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_LightsUseLinearIntensity: 0 + m_LightsUseColorTemperature: 0 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/InputManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..17c8f53 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/InputManager.asset @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/NavMeshAreas.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/NetworkManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/NetworkManager.asset new file mode 100644 index 0000000..5dc6a83 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/NetworkManager.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!149 &1 +NetworkManager: + m_ObjectHideFlags: 0 + m_DebugLevel: 0 + m_Sendrate: 15 + m_AssetToPrefab: {} diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/Physics2DSettings.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..57760e2 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,38 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_ChangeStopsCallbacks: 0 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/PresetManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..820e662 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/PresetManager.asset @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + m_DefaultList: + - type: + m_NativeTypeID: 108 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, + type: 2} + - type: + m_NativeTypeID: 1020 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, + type: 2} + - type: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, + type: 2} diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/ProjectSettings.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..6c7534b --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,630 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 15 + productGUID: 7a02bfe69b3862e44ac43995b563fb45 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: Project.Unity + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 0 + m_MTRendering: 1 + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosAppInBackgroundBehavior: 0 + displayResolutionDialog: 1 + iosAllowHTTPDownload: 1 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 0 + androidBlitType: 0 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 1 + captureSingleScreen: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + graphicsJobs: 0 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + graphicsJobMode: 0 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 0 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + vulkanEnableSetSRGBWrite: 0 + m_SupportedAspectRatios: + 4:3: 1 + 5:4: 1 + 16:10: 1 + 16:9: 1 + Others: 1 + bundleVersion: 0.1 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + isWsaHolographicRemotingEnabled: 0 + vrSettings: + cardboard: + depthFormat: 0 + enableTransitionView: 0 + daydream: + depthFormat: 0 + useSustainedPerformanceMode: 0 + enableVideoLayer: 0 + useProtectedVideoMemory: 0 + minimumSupportedHeadTracking: 0 + maximumSupportedHeadTracking: 1 + hololens: + depthFormat: 1 + depthBufferSharingEnabled: 1 + oculus: + sharedDepthBuffer: 1 + dashSupport: 1 + enable360StereoCapture: 0 + protectGraphicsMemory: 0 + enableFrameTimingStats: 0 + useHDRDisplay: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.1 + applicationIdentifier: {} + buildNumber: {} + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 16 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + APKExpansionFiles: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 1 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSTargetOSVersionString: 9.0 + tvOSSdkVersion: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 9.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + iPhoneSplashScreen: {fileID: 0} + iPhoneHighResSplashScreen: {fileID: 0} + iPhoneTallHighResSplashScreen: {fileID: 0} + iPhone47inSplashScreen: {fileID: 0} + iPhone55inPortraitSplashScreen: {fileID: 0} + iPhone55inLandscapeSplashScreen: {fileID: 0} + iPhone58inPortraitSplashScreen: {fileID: 0} + iPhone58inLandscapeSplashScreen: {fileID: 0} + iPadPortraitSplashScreen: {fileID: 0} + iPadHighResPortraitSplashScreen: {fileID: 0} + iPadLandscapeSplashScreen: {fileID: 0} + iPadHighResLandscapeSplashScreen: {fileID: 0} + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreenCustomXibPath: + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreeniPadCustomXibPath: + iOSUseLaunchScreenStoryboard: 0 + iOSLaunchScreenCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + iOSRenderExtraFrameOnPause: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea + templatePackageId: com.unity.template.3d@1.3.0 + templateDefaultScene: Assets/Scenes/SampleScene.unity + AndroidTargetArchitectures: 5 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 1 + AndroidIsGame: 1 + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + resolutionDialogBanner: {fileID: 0} + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: tvOS + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: iPhone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 0b00000008000000 + m_Automatic: 1 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AppleTVSupport + m_APIs: 10000000 + m_Automatic: 0 + - m_BuildTarget: WebGLSupport + m_APIs: 0b000000 + m_Automatic: 1 + m_BuildTargetVRSettings: + - m_BuildTarget: Standalone + m_Enabled: 0 + m_Devices: + - Oculus + - OpenVR + m_BuildTargetEnableVuforiaSettings: [] + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchTouchScreenUsage: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 3 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchPlayerConnectionEnabled: 1 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 1 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 0 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + spritePackerPolicy: + webGLMemorySize: 256 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 1 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + scriptingDefineSymbols: {} + platformArchitecture: {} + scriptingBackend: {} + il2cppCompilerConfiguration: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + allowUnsafeCode: 0 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + apiCompatibilityLevelPerPlatform: + '': 6 + Standalone: 3 + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: Template_3D + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: Template_3D + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, + a: 1} + metroSplashScreenUseBackgroundColor: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + metroCompilationOverrides: 1 + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + xboxOneScriptCompiler: 1 + XboxOneOverrideIdentityName: + vrEditorSettings: + daydream: + daydreamIconForeground: {fileID: 0} + daydreamIconBackground: {fileID: 0} + cloudServicesEnabled: + UNet: 1 + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_PrivateKeyPath: + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + facebookSdkVersion: 7.9.4 + facebookAppId: + facebookCookies: 1 + facebookLogging: 1 + facebookStatus: 1 + facebookXfbml: 0 + facebookFrictionlessRequests: 1 + apiCompatibilityLevel: 6 + cloudProjectId: + framebufferDepthMemorylessMode: 0 + projectName: + organizationId: + cloudEnabled: 0 + enableNativePlatformBackendsForNewInputSystem: 0 + disableOldInputManagerSupport: 0 + legacyClampBlendShapeWeights: 0 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/ProjectVersion.txt b/Samples/IntegratedDependencies.Unity/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..872caec --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/ProjectVersion.txt @@ -0,0 +1 @@ +m_EditorVersion: 2018.4.7f1 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/QualitySettings.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..0621bef --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/QualitySettings.asset @@ -0,0 +1,190 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 4 + m_QualitySettings: + - serializedVersion: 2 + name: Very Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Medium + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 0.7 + maximumLODLevel: 0 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 2 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Very High + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Ultra + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + Nintendo 3DS: 5 + Nintendo Switch: 5 + PS4: 5 + PSP2: 2 + Standalone: 5 + Tizen: 2 + WebGL: 3 + WiiU: 5 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/TagManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..17cb803 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/TagManager.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - PostProcessing + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/TimeManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..06bcc6d --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.1 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/UnityConnectSettings.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..fa0b146 --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/Samples/IntegratedDependencies.Unity/ProjectSettings/VFXManager.asset b/Samples/IntegratedDependencies.Unity/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..6e0eaca --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/ProjectSettings/VFXManager.asset @@ -0,0 +1,11 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 diff --git a/Samples/IntegratedDependencies.Unity/README.md b/Samples/IntegratedDependencies.Unity/README.md new file mode 100644 index 0000000..64d7d4f --- /dev/null +++ b/Samples/IntegratedDependencies.Unity/README.md @@ -0,0 +1,66 @@ +# Integrated Dependencies + +This project shows a considerably more robust usage of MSBuildForUnity for your dependency management needs. Here, we rely on project generation to create .csproj files for each Assembly Definition file declared in the project, as well as, the top-level Dependencies project. Furthermore, we include an "External (to Unity)" .csproj and establish a dependency relationship between two of our components and that code. And finally, these dependency relationships are actually established depending on the platform that is currently selected in Unity. + +## Generated Projects + +When you open this sample in Unity, you will note that project generation is enabled: + +![Project Generation Enabled](docs\ProjectGenerationEnabled.png) + +> This is persisted in a checked-in file at `IntegratedDependencies.Unity\MSBuild\settings.json`. + +Generation is split into two types of files being created: + +- Persistent files that can be checked-in: + - C# Project files that are found under `Assets/` or `Packages/` folder. + - Solution file in the Assets folder +- Transient files Under `MSBuild/` that will be regenerated, and shouldn't be checked in. +- MSBuildForUnity.Common.props that will be regenerated and shouldn't be checked-in. + +There is a limited set of times when the projects would be automatically regenerated: + +- When you enable `Generation Enabled`, it will go ahead and generate. +- When you launch Unity +- When you switch platforms +- Every time a rebuild happens, we do a super fast regeneration of MSBuildForUnity.common.props. + +## Establishing Dependency Relationship + +In order to add dependencies to your project, you can open any C# project under `Assets/` or `Packages/` folder and modify it. For example, here is the `Assembly-CSharp.msb4u.csproj`. + +![Assembly-CSharp.msb4u.csproj](docs\Assembly-CSharpGeneratedProject.png) + +This project has been modified to depend on an external C# project that is unrelated to Unity. Thus when this project is built, it will build that dependency and bring it into the Unity Assets folder. + +### Platform Specific Dependency + +Furthermore, this sample includes an example of how to specify a dependency for a specific platform. The Assembly Definition at `Assets\WSASpecific\Component.WSA.asmdef` is marked to be built for `Universal Windows Platform` and `Editor` platforms; additionally it specifies a `UNITY_WSA` define constraint that only allows it to be compiled when UWP platform is selected. + +![Dependencies.msb4u.csproj](docs\UWPAsmDef.png) + +The generated project `Assets\WSASpecific\Component.WSA.msb4u.csproj` contains a dependency on `CommonLibrary.WSA.csproj` that would get built and pulled in only when the Editor is set to UWP platform. + +![Dependencies.msb4u.csproj](docs\UWPGeneratedProject.png) + +> As you can see, this project also incudes the `NewtonSoft.Json` NuGet package reference that will be brought in. + +## Building Dependencies + +MSBuild Tools for Unity auto builds the `Dependencies.msb4u.csproj` at various times in order for these dependencies to be pulled in. If for some reason this doesn't happen, you can select the `Dependencies.msb4u` item under `Assets/` folder and press `Build` yourself. + +![Dependencies.msb4u.csproj](docs\CSProjectBuild.png) + +## Known Limitations + +### Unity Specific NuGet Packages + +A NuGet package that was built for NuGet like [Microsoft.MixedReality.Toolkit.Foundation](https://www.nuget.org/packages/Microsoft.MixedReality.Toolkit.Foundation/) won't yet work with this method. Support for that is coming soon. + +### Player vs Editor Dependencies + +There is no supported way to pull in one dependency for the editor and a different one for when the Player is being built. You can only do it on a platform level. + +### When Regeneration and Rebuilding Happens + +There are still fine tuning and optimizations that must happen to make sure we regenerate and build the minimum number of times but sufficiently often. Today we err on the side of less. diff --git a/Samples/IntegratedDependencies.Unity/docs/Assembly-CSharpGeneratedProject.png b/Samples/IntegratedDependencies.Unity/docs/Assembly-CSharpGeneratedProject.png new file mode 100644 index 0000000000000000000000000000000000000000..442d9c4c670d0c88a163d28ebcbecc55cfa927d4 GIT binary patch literal 189215 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

lnWOt-u<1s*arrUQxJK409amf$Tgh% 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ℜ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 literal 0 HcmV?d00001 diff --git a/Samples/IntegratedDependencies.Unity/docs/UWPAsmDef.png b/Samples/IntegratedDependencies.Unity/docs/UWPAsmDef.png new file mode 100644 index 0000000000000000000000000000000000000000..8733bb603be7516d0c627ccde23fa13a8f24c51e GIT binary patch literal 50223 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 /// Tries to build all projects that define the specified profile. @@ -62,7 +65,13 @@ public static bool CanBuildAllProjects(string profile) [MenuItem(MSBuildProjectBuilder.RebuildAllProjectsMenuName, validate = true)] private static bool CanRebuildAllProjects() => MSBuildProjectBuilder.CanBuildAllProjects(MSBuildProjectBuilder.RebuildProfileName); - [MenuItem(MSBuildProjectBuilder.PackAllProjectsMenuName, priority = 3)] + [MenuItem(MSBuildProjectBuilder.CleanAllProjectsMenuName, priority = 3)] + private static void CleanAllProjects() => MSBuildProjectBuilder.TryBuildAllProjects(MSBuildProjectBuilder.CleanProfileName); + + [MenuItem(MSBuildProjectBuilder.CleanAllProjectsMenuName, validate = true)] + private static bool CanCleanAllProjects() => MSBuildProjectBuilder.CanBuildAllProjects(MSBuildProjectBuilder.CleanProfileName); + + [MenuItem(MSBuildProjectBuilder.PackAllProjectsMenuName, priority = 4)] private static void PackAllProjects() => MSBuildProjectBuilder.TryBuildAllProjects(MSBuildProjectBuilder.PackProfileName); [MenuItem(MSBuildProjectBuilder.PackAllProjectsMenuName, validate = true)] diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs index 323dda0..4384f67 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs @@ -15,6 +15,13 @@ public enum BuildEngine [CreateAssetMenu(fileName = nameof(MSBuildProjectReference), menuName = "MSBuild/Project Reference", order = 1)] public sealed partial class MSBuildProjectReference : ScriptableObject { + public static readonly MSBuildBuildProfile[] DefaultProfiles = new[] + { + MSBuildBuildProfile.Create(name: "Build", autoBuild: true, arguments: "-t:Build -p:Configuration=Release"), + MSBuildBuildProfile.Create(name: "Rebuild", autoBuild: false, arguments: "-t:Rebuild -p:Configuration=Release"), + MSBuildBuildProfile.Create(name: "Clean", autoBuild: false, arguments: "-t:Clean -p:Configuration=Release") + }; + private string assetRelativePath; [SerializeField] @@ -27,11 +34,7 @@ public sealed partial class MSBuildProjectReference : ScriptableObject [SerializeField] [Tooltip("Named profiles to configure different build options.")] - private MSBuildBuildProfile[] profiles = new[] - { - MSBuildBuildProfile.Create(name: "Build", autoBuild: true, arguments: "-t:Build -p:Configuration=Release"), - MSBuildBuildProfile.Create(name: "Rebuild", autoBuild: false, arguments: "-t:Rebuild -p:Configuration=Release"), - }; + private MSBuildBuildProfile[] profiles; ///

/// Creates an in-memory instance that can resolve the full path to the MSBuild project. @@ -46,7 +49,7 @@ public sealed partial class MSBuildProjectReference : ScriptableObject /// public static MSBuildProjectReference FromMSBuildProject(string assetRelativePath, BuildEngine buildEngine = BuildEngine.DotNet, bool autoBuild = true, IEnumerable profiles = null) { - var msBuildProjectReference = ScriptableObject.CreateInstance(); + MSBuildProjectReference msBuildProjectReference = ScriptableObject.CreateInstance(); msBuildProjectReference.assetRelativePath = assetRelativePath; msBuildProjectReference.projectPath = Path.GetFileName(assetRelativePath); msBuildProjectReference.buildEngine = buildEngine; @@ -55,6 +58,10 @@ public static MSBuildProjectReference FromMSBuildProject(string assetRelativePat { msBuildProjectReference.profiles = profiles.ToArray(); } + else if (!Path.GetFileNameWithoutExtension(assetRelativePath).EndsWith(".msb4u") || Path.GetFileName(assetRelativePath).Equals("Dependencies.msb4u.csproj")) + { + msBuildProjectReference.profiles = DefaultProfiles; + } return msBuildProjectReference; } @@ -72,20 +79,20 @@ public string ProjectPath } // Determine the absolute path of the MSBuild project (based on the projectPath being relative to the MSBuildProjectReference asset). - if (!string.IsNullOrEmpty(this.projectPath)) + if (!string.IsNullOrEmpty(projectPath)) { string unityProjectPath = Path.GetDirectoryName(Application.dataPath); string assetAbsolutePath = Path.Combine(unityProjectPath, assetRelativePath); string assetAbsoluteDirectory = Path.GetDirectoryName(assetAbsolutePath); - return Path.GetFullPath(Path.Combine(assetAbsoluteDirectory, this.projectPath)); + return Path.GetFullPath(Path.Combine(assetAbsoluteDirectory, projectPath)); } return string.Empty; } } - public BuildEngine BuildEngine => this.buildEngine; + public BuildEngine BuildEngine => buildEngine; - public IEnumerable<(string name, bool autoBuild, string arguments)> Profiles => this.profiles == null ? Enumerable.Empty<(string, bool, string)>() : this.profiles.Select(profile => (profile.Name, profile.AutoBuild, profile.Arguments)); + public IEnumerable<(string name, bool autoBuild, string arguments)> Profiles => profiles == null ? Enumerable.Empty<(string, bool, string)>() : profiles.Select(profile => (profile.Name, profile.AutoBuild, profile.Arguments)); } } \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/BuildProjects.proj.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/BuildProjects.proj.template index c21081e..479520f 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/BuildProjects.proj.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/BuildProjects.proj.template @@ -10,7 +10,7 @@ - + @@ -18,7 +18,7 @@ - + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template new file mode 100644 index 0000000..e42a19d --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template.meta new file mode 100644 index 0000000..276cd95 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c06e9ab4f8362d843b4dbbb2abaeb7ac +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.props.template new file mode 100644 index 0000000..3e18de6 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.props.template @@ -0,0 +1,40 @@ + + + netstandard2.0 + + + + $(UnityCurrentTargetFramework) + + + + $(UnityCurrentPlatform) + + + + InEditor + + $(MSBuildForUnityGeneratedOutputDirectory)\..\Output\obj\Dependencies + Dependencies + false + + + + + all + runtime; build; native; contentfiles; analyzers + + + + + + + + + + false + UnityPlatform=$(UnityPlatform);UnityConfiguration=$(UnityConfiguration) + + + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.props.template.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.props.template.meta new file mode 100644 index 0000000..de9b969 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.props.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eaa950a4c5621f946b09217b6bba875f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.targets.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.targets.template new file mode 100644 index 0000000..4b5f050 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.targets.template @@ -0,0 +1,7 @@ + + + + + <_GenerateRestoreGraphProjectEntryInputProperties>$(_GenerateRestoreGraphProjectEntryInputProperties);UnityConfiguration=$(UnityConfiguration);UnityPlatform=$(UnityPlatform) + + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.targets.template.meta b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.targets.template.meta new file mode 100644 index 0000000..70ff5b5 --- /dev/null +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.g.targets.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b915073bf6dad7549a419edbfd6bdc12 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template index 239c5f6..8962743 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/SDKProjectTemplate.g.targets.template @@ -9,12 +9,7 @@ - - $(BuildDependsOn) - - - - + @@ -23,7 +18,7 @@ - + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template index d80b27b..57af61e 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template @@ -19,10 +19,15 @@ $(MSBuildExtensionsPathOverride)\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.targets - + $(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.targets + + + + $(MSBuildBinPath)\Microsoft.CSharp.Targets + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template index 7e56a19..b442c0c 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template @@ -23,10 +23,15 @@ $(MSBuildExtensionsPathOverride)\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.targets - + $(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.targets + + + + $(MSBuildBinPath)\Microsoft.CSharp.Targets + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Microsoft.MSBuildForUnity.ProjectGenerator.Editor.asmdef b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Microsoft.MSBuildForUnity.ProjectGenerator.Editor.asmdef index df96baf..cd2fcbe 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Microsoft.MSBuildForUnity.ProjectGenerator.Editor.asmdef +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Microsoft.MSBuildForUnity.ProjectGenerator.Editor.asmdef @@ -1,6 +1,8 @@ { "name": "Microsoft.MSBuildForUnity.ProjectGenerator", - "references": [], + "references": [ + "MSBuildForUnity" + ], "optionalUnityReferences": [], "includePlatforms": [ "Editor" diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs index 694bd05..c9afe75 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/IProjectExporter.cs @@ -49,7 +49,7 @@ public interface IProjectExporter /// /// The platform to export. /// True if this is an In-Editor flavor, false otherwise. - void ExportCommonPropsFile(CompilationPlatformInfo platform, bool inEditorConfiguration); + void ExportPlatformPropsFile(CompilationPlatformInfo platform, bool inEditorConfiguration); } } #endif diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs index 1cef882..2f78968 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs @@ -29,6 +29,10 @@ public class TemplatedProjectExporter : IProjectExporter private readonly FileTemplate solutionFileTemplate; private readonly FileTemplate msbuildForUnityCommonTemplate; + private readonly FileTemplate dependenciesProjectTemplate; + private readonly FileTemplate dependenciesPropsTemplate; + private readonly FileTemplate dependenciesTargetsTemplate; + /// /// Creates a new instance of the template driven . /// @@ -37,7 +41,12 @@ public class TemplatedProjectExporter : IProjectExporter /// The path to the C# project file template. /// The path to the props file template. /// The path to the targets file template. - public TemplatedProjectExporter(DirectoryInfo generatedOutputFolder, FileInfo solutionFileTemplatePath, FileInfo projectFileTemplatePath, FileInfo generatedProjectFileTemplatePath, FileInfo projectPropsFileTemplatePath, FileInfo projectTargetsFileTemplatePath, FileInfo msbuildForUnityCommonTemplatePath) + /// The path to the generated project file that won't be checked-in. + /// Path to the common props file that is quick generated. + /// Path to the dependencies project template file. + /// Path to the dependencies props template file. + /// Path to the dependencies targets template file. + public TemplatedProjectExporter(DirectoryInfo generatedOutputFolder, FileInfo solutionFileTemplatePath, FileInfo projectFileTemplatePath, FileInfo generatedProjectFileTemplatePath, FileInfo projectPropsFileTemplatePath, FileInfo projectTargetsFileTemplatePath, FileInfo msbuildForUnityCommonTemplatePath, FileInfo dependenciesProjectTemplatePath, FileInfo dependenciesPropsTemplatePath, FileInfo dependenciesTargetsTemplatePath) { this.generatedOutputFolder = generatedOutputFolder; @@ -48,11 +57,20 @@ public TemplatedProjectExporter(DirectoryInfo generatedOutputFolder, FileInfo so FileTemplate.TryParseTemplate(solutionFileTemplatePath, out solutionFileTemplate); FileTemplate.TryParseTemplate(msbuildForUnityCommonTemplatePath, out msbuildForUnityCommonTemplate); + + FileTemplate.TryParseTemplate(dependenciesProjectTemplatePath, out dependenciesProjectTemplate); + FileTemplate.TryParseTemplate(dependenciesPropsTemplatePath, out dependenciesPropsTemplate); + FileTemplate.TryParseTemplate(dependenciesTargetsTemplatePath, out dependenciesTargetsTemplate); } private string GetProjectFilePath(DirectoryInfo directory, CSProjectInfo projectInfo) { - return Path.Combine(directory.FullName, $"{projectInfo.Name}.{MSBuildFileSuffix}.csproj"); + return GetProjectFilePath(directory.FullName, projectInfo.Name); + } + + private string GetProjectFilePath(string directory, string projectName) + { + return Path.Combine(directory, $"{projectName}.{MSBuildFileSuffix}.csproj"); } /// @@ -253,7 +271,7 @@ public void ExportSolution(UnityProjectInfo unityProjectInfo) foreach (CSProjectInfo project in orderedProjects) { TemplateReplacementSet replacementSet = projectTemplate.CreateReplacementSet(rootReplacementSet); - ProcessProjectEntry(project, projectTemplate, replacementSet); + ProcessProjectEntry(project.Name, GetProjectPath(project).FullName, project.Guid, project.ProjectDependencies, projectTemplate, replacementSet); switch (project.AssemblyDefinitionInfo.AssetLocation) { @@ -270,6 +288,9 @@ public void ExportSolution(UnityProjectInfo unityProjectInfo) } } + // Add the "Dependencies" project + ProcessProjectEntry("Dependencies", GetProjectFilePath(Utilities.AssetPath, "Dependencies"), Guid.NewGuid(), null, projectTemplate, projectTemplate.CreateReplacementSet(rootReplacementSet)); + PopulateFolder(folderTemplate, folderNestedProjectsTemplate, rootReplacementSet, "Built In Packages", builtinPackages); PopulateFolder(folderTemplate, folderNestedProjectsTemplate, rootReplacementSet, "Imported Packages", importedPacakges); PopulateFolder(folderTemplate, folderNestedProjectsTemplate, rootReplacementSet, "External Packages", externalPackages); @@ -324,9 +345,42 @@ void ProcessMappings(Guid guid, string configuration, IReadOnlyDictionary allPlatforms = unityProjectInfo.AvailablePlatforms.ToDictionary(t => t.BuildTarget, t => t); + foreach (CSProjectInfo projectInfo in unityProjectInfo.CSProjects.Values) + { + List platformConditions = GetPlatformConditions(allPlatforms, projectInfo.InEditorPlatforms.Keys); + ProcessProjectDependency(replacementSet, projectReferenceTemplate, projectInfo, platformConditions); + } + + dependenciesPropsTemplate.Write(propsPath, replacementSet); + + ITemplatePart targetsFileTemplate = dependenciesTargetsTemplate.Root; + + dependenciesTargetsTemplate.Write(targetsPath, propsFileTemplate.CreateReplacementSet()); + + if (!File.Exists(projectPath)) + { + dependenciesProjectTemplate.Write(projectPath, dependenciesProjectTemplate.Root.CreateReplacementSet()); + } + } + private void PopulateFolder(ITemplatePart folderTemplate, ITemplatePart folderNestedProjectsTemplate, TemplateReplacementSet parentReplacementSet, string folderName, List projects) { if (projects.Count > 0) @@ -365,12 +419,7 @@ private void CreateProjectReferencesSet(CSProjectInfo projectInfo, ITemplatePart foreach (CSProjectDependency dependency in projectInfo.ProjectDependencies) { List platformConditions = GetPlatformConditions(inEditor ? projectInfo.InEditorPlatforms : projectInfo.PlayerPlatforms, inEditor ? dependency.InEditorSupportedPlatforms : dependency.PlayerSupportedPlatforms); - - string projectPath = GetProjectPath(dependency.Dependency).FullName; - TemplateReplacementSet replacementSet = projectReferenceTemplatePart.CreateReplacementSet(templateReplacementSet); - projectReferenceTemplatePart.Tokens["REFERENCE"].AssignValue(replacementSet, projectPath); - //projectReferenceTemplatePart.Tokens["HINT_PATH"].AssignValue(replacementSet, GetProjectPath(dependency.Dependency).AbsolutePath); - projectReferenceTemplatePart.Tokens["CONDITION"].AssignValue(replacementSet, platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)); + ProcessProjectDependency(templateReplacementSet, projectReferenceTemplatePart, dependency.Dependency, platformConditions); } foreach (CSProjectDependency dependency in projectInfo.PluginDependencies) @@ -392,15 +441,23 @@ private void CreateProjectReferencesSet(CSProjectInfo projectInfo, ITemplatePart templatePart.Tokens["REFERENCE_CONFIGURATION"].AssignValue(templateReplacementSet, inEditor ? "InEditor" : "Player"); } - private List GetPlatformConditions(IReadOnlyDictionary platforms, HashSet dependencyPlatforms) + private void ProcessProjectDependency(TemplateReplacementSet parentReplacementSet, ITemplatePart projectReferenceTemplatePart, CSProjectInfo dependency, List platformConditions) + { + string projectPath = GetProjectPath(dependency).FullName; + TemplateReplacementSet replacementSet = projectReferenceTemplatePart.CreateReplacementSet(parentReplacementSet); + projectReferenceTemplatePart.Tokens["REFERENCE"].AssignValue(replacementSet, projectPath); + projectReferenceTemplatePart.Tokens["CONDITION"].AssignValue(replacementSet, platformConditions.Count == 0 ? "false" : string.Join(" OR ", platformConditions)); + } + + private List GetPlatformConditions(IReadOnlyDictionary platforms, IEnumerable dependencyPlatforms) { List toReturn = new List(); - foreach (KeyValuePair pair in platforms) + foreach (BuildTarget platform in dependencyPlatforms) { - if (dependencyPlatforms.Contains(pair.Key)) + if (platforms.TryGetValue(platform, out CompilationPlatformInfo platformInfo)) { - string platformName = pair.Value.Name; + string platformName = platformInfo.Name; toReturn.Add($"'$(UnityPlatform)' == '{platformName}'"); } } @@ -408,19 +465,17 @@ private List GetPlatformConditions(IReadOnlyDictionary> projectDependencies, ITemplatePart templatePart, TemplateReplacementSet replacementSet) { - string projectPath = GetProjectPath(projectInfo).FullName; - - templatePart.Tokens["PROJECT_NAME"].AssignValue(replacementSet, projectInfo.Name); + templatePart.Tokens["PROJECT_NAME"].AssignValue(replacementSet, projectName); templatePart.Tokens["PROJECT_RELATIVE_PATH"].AssignValue(replacementSet, projectPath); - templatePart.Tokens["PROJECT_GUID"].AssignValue(replacementSet, projectInfo.Guid.ToString().ToUpper()); + templatePart.Tokens["PROJECT_GUID"].AssignValue(replacementSet, projectGuid.ToString().ToUpper()); ITemplatePart dependencyTemplate = templatePart.Templates["PROJECT_DEPENDENCY"]; - if (projectInfo.ProjectDependencies.Count > 0) + if (projectDependencies != null && projectDependencies.Count > 0) { - foreach (CSProjectDependency project in projectInfo.ProjectDependencies) + foreach (CSProjectDependency project in projectDependencies) { TemplateReplacementSet set = dependencyTemplate.CreateReplacementSet(replacementSet); dependencyTemplate.Tokens["DEPENDENCY_GUID"].AssignValue(set, project.Dependency.Guid.ToString().ToUpper()); @@ -428,7 +483,7 @@ private void ProcessProjectEntry(CSProjectInfo projectInfo, ITemplatePart templa } } - public void ExportCommonPropsFile(CompilationPlatformInfo platform, bool inEditorConfiguration) + public void ExportPlatformPropsFile(CompilationPlatformInfo platform, bool inEditorConfiguration) { string configuration = inEditorConfiguration ? "InEditor" : "Player"; diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs index 2a9dc78..8cfa7b0 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs @@ -9,6 +9,7 @@ using System.Diagnostics; using System.IO; using UnityEditor; +using UnityEditor.Build; using UnityEngine; using Debug = UnityEngine.Debug; @@ -55,6 +56,19 @@ public static MSBuildToolsConfig Load() [InitializeOnLoad] public static class MSBuildTools { + private class BuildTargetChanged : IActiveBuildTargetChanged + { + public int callbackOrder => 0; + + public void OnActiveBuildTargetChanged(BuildTarget previousTarget, BuildTarget newTarget) + { + Debug.Log("Change"); + MSBuildProjectBuilder.TryBuildAllProjects(MSBuildProjectBuilder.CleanProfileName); + RunCoreAutoGenerate(true); + MSBuildProjectBuilder.TryBuildAllProjects(MSBuildProjectBuilder.BuildProfileName); + } + } + private static readonly HashSet supportedBuildTargets = new HashSet() { BuildTarget.StandaloneWindows, @@ -67,6 +81,7 @@ public static class MSBuildTools public const string CSharpVersion = "7.3"; public const string AutoGenerate = "MSBuild/Generation Enabled"; + private static readonly string TokenFilePath = Path.Combine(Utilities.ProjectPath, "Temp", "PropsGeneratedThisEditorInstance.token"); public static readonly Version DefaultMinUWPSDK = new Version("10.0.14393.0"); private static UnityProjectInfo unityProjectInfo; @@ -81,16 +96,19 @@ public static class MSBuildTools TemplateFiles.Instance.SDKGeneratedProjectFileTemplatePath, TemplateFiles.Instance.SDKProjectPropsFileTemplatePath, TemplateFiles.Instance.SDKProjectTargetsFileTemplatePath, - TemplateFiles.Instance.MSBuildForUnityCommonPropsTemplatePath)); + TemplateFiles.Instance.MSBuildForUnityCommonPropsTemplatePath, + TemplateFiles.Instance.DependenciesProjectTemplatePath, + TemplateFiles.Instance.DependenciesPropsTemplatePath, + TemplateFiles.Instance.DependenciesTargetsTemplatePath)); public static MSBuildToolsConfig Config { get; } = MSBuildToolsConfig.Load(); - + [MenuItem(AutoGenerate, priority = 101)] public static void ToggleAutoGenerate() { Config.AutoGenerateEnabled = !Config.AutoGenerateEnabled; Menu.SetChecked(AutoGenerate, Config.AutoGenerateEnabled); - RunCoreAutoGenerate(); + RunCoreAutoGenerate(false); } [MenuItem(AutoGenerate, true, priority = 101)] @@ -100,7 +118,7 @@ public static bool ToggleAutoGenerate_Validate() return true; } - + [MenuItem("MSBuild/Regenerate C# SDK Projects", priority = 102)] public static void GenerateSDKProjects() { @@ -118,27 +136,29 @@ public static void GenerateSDKProjects() static MSBuildTools() { - RunCoreAutoGenerate(); + RunCoreAutoGenerate(false); } - private static void RunCoreAutoGenerate() + private static void RunCoreAutoGenerate(bool skipTokenFileCheck) { - Exporter.GenerateDirectoryPropsFile(UnityProjectInfo); - - if (!Config.AutoGenerateEnabled) - { - return; - } - - string tokenFile = Path.Combine(Utilities.ProjectPath, "Temp", "PropsGeneratedThisEditorInstance.token"); // Check if a file exists, if it does, we already generated this editor instance - if (!File.Exists(tokenFile)) + bool fileExists = File.Exists(TokenFilePath); + if (!fileExists || skipTokenFileCheck) { - RegenerateEverything(false); - - File.Create(tokenFile).Dispose(); - } + Exporter.GenerateDirectoryPropsFile(UnityProjectInfo); + + if (!Config.AutoGenerateEnabled) + { + return; + } + RegenerateEverything(true); + + if (!fileExists) + { + File.Create(TokenFilePath).Dispose(); + } + } } private static void ExportCoreUnityPropFiles() @@ -146,11 +166,11 @@ private static void ExportCoreUnityPropFiles() foreach (CompilationPlatformInfo platform in UnityProjectInfo.AvailablePlatforms) { // Check for specialized template, otherwise get the common one - Exporter.ExportCommonPropsFile(platform, true); - Exporter.ExportCommonPropsFile(platform, false); + Exporter.ExportPlatformPropsFile(platform, true); + Exporter.ExportPlatformPropsFile(platform, false); } - Exporter.ExportCommonPropsFile(UnityProjectInfo.EditorPlatform, true); + Exporter.ExportPlatformPropsFile(UnityProjectInfo.EditorPlatform, true); } private static void RegenerateEverything(bool reparseUnityData) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs index 3f48c97..59b7727 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Templates/TemplateFiles.cs @@ -25,6 +25,9 @@ public class TemplateFiles private const string SDKGeneratedProjectFileTemplateName = "SDKProjectTemplate.g.csproj.template"; private const string SDKProjectPropsFileTemplateName = "SDKProjectTemplate.g.props.template"; private const string SDKProjectTargetsFileTemplateName = "SDKProjectTemplate.g.targets.template"; + private const string DependenciesProjectFileTemplateName = "DependenciesProjectTemplate.csproj.template"; + private const string DependenciesPropsFileTemplateName = "DependenciesProjectTemplate.g.props.template"; + private const string DependenciesTargetsFileTemplateName = "DependenciesProjectTemplate.g.targets.template"; private const string PlatformPropsTemplateName = "Platform.Configuration.Any.props.template"; private const string EditorPropsTemplateName = "Editor.InEditor.Any.props.template"; private const string SpecifcPlatformPropsTemplateRegex = @"[a-zA-Z]+\.[a-zA-Z]+\.[a-zA-Z0-9]*\.props.template"; @@ -48,6 +51,21 @@ public class TemplateFiles ///

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 p{lM8b|C-AQVw_ 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

public FileInfo MSBuildForUnityCommonPropsTemplatePath { get; } + /// + /// The path to the dependencies project file template. + /// + public FileInfo DependenciesProjectTemplatePath { get; } + + /// + /// The path to the dependencies project props template. + /// + public FileInfo DependenciesPropsTemplatePath { get; } + + /// + /// The path to the dependencies project targets template. + /// + public FileInfo DependenciesTargetsTemplatePath { get; } + /// /// Gets the MSBuild C# SDK Project file (.csproj) template path. /// @@ -114,6 +132,9 @@ private TemplateFiles() MSBuildSolutionTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "MSBuild Solution", MSBuildSolutionTemplateName)); MSBuildForUnityCommonPropsTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Directory.Build Props File", MSBuildForUnityCommonPropsTemplateName)); + DependenciesProjectTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Dependencies CSProject File", DependenciesProjectFileTemplateName)); + DependenciesPropsTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Dependencies Props File", DependenciesPropsFileTemplateName)); + DependenciesTargetsTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Dependencies Props File", DependenciesTargetsFileTemplateName)); SDKProjectFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project", SDKProjectFileTemplateName)); SDKGeneratedProjectFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "Generated SDK Project", SDKGeneratedProjectFileTemplateName)); SDKProjectPropsFileTemplatePath = new FileInfo(GetExpectedTemplatesPath(fileNamesMaps, "SDK Project Props", SDKProjectPropsFileTemplateName)); diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs index 6d70f64..089ec05 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/UnityProjectInfo.cs @@ -173,6 +173,19 @@ private Dictionary CreateUnityProjects() } } + // This will parse additional asmdefs that are not part of current compilation set, but we still need + foreach (string asmdefGuid in AssetDatabase.FindAssets("t:asmdef")) + { + string asmDefPath = AssetDatabase.GUIDToAssetPath(asmdefGuid); + string asmDefKey = Path.GetFileNameWithoutExtension(asmDefPath); + if (!asmDefInfoMap.ContainsKey(asmDefKey)) + { + AssemblyDefinitionInfo assemblyDefinitionInfo = AssemblyDefinitionInfo.Parse(new FileInfo(Utilities.GetFullPathFromKnownRelative(asmDefPath)), this, null); + asmDefDirectoriesSorted.Add(assemblyDefinitionInfo); + asmDefInfoMap.Add(asmDefKey, assemblyDefinitionInfo); + } + } + int index = 0; ProcessSortedAsmDef(asmDefDirectoriesSorted.ToArray(), ref index, (uri) => true, (a) => { }); @@ -238,7 +251,7 @@ private CSProjectInfo GetProjectInfo(Dictionary projectsM if (!asmDefInfoMap.TryGetValue(projectKey, out AssemblyDefinitionInfo assemblyDefinitionInfo)) { - Debug.LogError($"Can't find an asmdef for project: {projectKey}; Unity actually allows this, so proceeding."); + Debug.Log($"Can't find an asmdef for project: {projectKey}; Unity actually allows this, so proceeding."); return null; } @@ -247,9 +260,10 @@ private CSProjectInfo GetProjectInfo(Dictionary projectsM if (!assemblyDefinitionInfo.BuiltInPackage) { + Uri dependencies = new Uri(Path.Combine(Utilities.AssetPath, "Dependencies")); foreach (PluginAssemblyInfo plugin in Plugins.Where(t => t.Type != PluginType.Native)) { - if (plugin.AutoReferenced || assemblyDefinitionInfo.PrecompiledAssemblyReferences.Contains(plugin.Name)) + if (!dependencies.IsBaseOf(plugin.ReferencePath) && (plugin.AutoReferenced || assemblyDefinitionInfo.PrecompiledAssemblyReferences.Contains(plugin.Name))) { toReturn.AddDependency(plugin); } From b06e86ffe3c602c8edf47189136a312e4fb2fe02 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 14 Nov 2019 13:26:02 -0800 Subject: [PATCH 09/19] Updating the main Readme.md (#50) --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 266f52d..6d61e18 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,15 @@ # MSBuildForUnity -MSBuildForUnity is a [collection of tools](#features) to help integrate MSBuild with Unity. This is helpful in leveraging more of the .NET ecosystem within Unity. Some things this project helps with are: -- Sharing code (via an MSBuild project) between Unity and other .NET projects (such as UWP XAML apps, Xamarin apps, etc.). +MSBuildForUnity solves the problem of establishing a clear dependency relationships between Unity project and other .NET components such as external (to Unity) C# projects, or NuGet packages. It creates a familiar to .NET developers project structure and ensures that the dependencies are resolves and brought into the Unity project as appropriate. With this component, you can: + +- Share code between Unity and other .NET projects (such as UWP XAML apps, Xamarin apps, etc.). - Consuming existing .NET components (e.g. NuGet packages). +The samples included in this repository best convey the simplicity and value of this component: + +- [Simple NuGet Dependency Sample](Samples/SimpleNuGetDependency.Unity/Readme.md) - Showcases the simplest and most minimal usage of this component to pull in a dependency. +- [Integrated Dependencies Sample](Samples/IntegratedDependencies.Unity/Readme.md) - Showcases the power of this component by relying on project generation. + ## Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a From b1b40110472ddab3435c9ebb1aa0ec4e73b50082 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 14 Nov 2019 13:46:06 -0800 Subject: [PATCH 10/19] Updating versioning (#51) --- .../MSBuildForUnity.csproj | 17 ++++++++++++----- .../com.microsoft.msbuildforunity/package.json | 13 ++++++++++--- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Source/MSBuildTools.Unity.NuGet/MSBuildForUnity.csproj b/Source/MSBuildTools.Unity.NuGet/MSBuildForUnity.csproj index 13dc227..7b6656e 100644 --- a/Source/MSBuildTools.Unity.NuGet/MSBuildForUnity.csproj +++ b/Source/MSBuildTools.Unity.NuGet/MSBuildForUnity.csproj @@ -27,13 +27,20 @@ 0 - 1 + + 8 - + 0 - $(BUILD_BUILDID) - - $(MajorVersion).$(MinorVersion).$(RevisionVersion) + + $(MajorVersion).$(MinorVersion).$(RevisionVersion) + + $(Version)-$(BUILD_BUILDID) + + $(Version) + $(MajorVersion).$(MinorVersion) + $(AssemblyVersion).$(RevisionVersion).* + $(AssemblyVersion).$(RevisionVersion).$(BUILD_BUILDID) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/package.json b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/package.json index 58a6b88..68c122f 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/package.json +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/package.json @@ -1,15 +1,22 @@ { "name": "com.microsoft.msbuildforunity", - "version": "0.1.0", + "version": "0.8.0", "displayName": "MSBuild for Unity", - "description": "A set of tools for Unity to make it simpler to work with MSBuild toolchain.", + "description": "MSBuildForUnity solves the problem of establishing a clear dependency relationships between Unity project and other .NET components such as external (to Unity) C# projects, or NuGet packages. It creates a familiar to .NET developers project structure and ensures that the dependencies are resolves and brought into the Unity project as appropriate.", "unity": "2018.1", "dependencies": { }, "keywords": [ "msbuild", "nuget", - "unity" + "unity", + "dependencies", + "external", + "visual studio", + "C#", + "projects", + "PackageReference", + "ProjectReference" ], "author": { "name": "Microsoft", From ef008457bf0903062327e551ba475d78f5c87371 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 14 Nov 2019 13:56:32 -0800 Subject: [PATCH 11/19] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6d61e18..f52ecae 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MSBuildForUnity -MSBuildForUnity solves the problem of establishing a clear dependency relationships between Unity project and other .NET components such as external (to Unity) C# projects, or NuGet packages. It creates a familiar to .NET developers project structure and ensures that the dependencies are resolves and brought into the Unity project as appropriate. With this component, you can: +MSBuildForUnity solves the problem of establishing clear dependency relationships between Unity project and other .NET components such as external (to Unity) C# projects, or NuGet packages. It creates a familiar to .NET developers project structure and ensures that the dependencies are resolved and brought into the Unity project as appropriate. With this component, you can: - Share code between Unity and other .NET projects (such as UWP XAML apps, Xamarin apps, etc.). - Consuming existing .NET components (e.g. NuGet packages). @@ -123,4 +123,4 @@ For details, see the [documentation](Documentation/MSBuildForUnityNuGetPackage/M [NuGetBuild]: https://dev.azure.com/UnityDeveloperTools/MSBuildForUnity/_build/latest?definitionId=3&branchName=master [NuGetPackageBadge]: https://feeds.dev.azure.com/UnityDeveloperTools/0cb95e25-9194-4ccd-9afb-439b25ecb93a/_apis/public/Packaging/Feeds/a3d1c3cc-6042-4e05-b699-39a947e75639/Packages/bdf78d31-dd97-4f6b-befb-75bb6185172e/Badge -[NuGetPackage]: https://dev.azure.com/UnityDeveloperTools/MSBuildForUnity/_packaging?_a=package&feed=a3d1c3cc-6042-4e05-b699-39a947e75639&package=bdf78d31-dd97-4f6b-befb-75bb6185172e&preferRelease=true \ No newline at end of file +[NuGetPackage]: https://dev.azure.com/UnityDeveloperTools/MSBuildForUnity/_packaging?_a=package&feed=a3d1c3cc-6042-4e05-b699-39a947e75639&package=bdf78d31-dd97-4f6b-befb-75bb6185172e&preferRelease=true From bd00781de7a5d29048729baebe98f74772eeaced Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 14 Nov 2019 13:57:06 -0800 Subject: [PATCH 12/19] Update package.json --- .../Packages/com.microsoft.msbuildforunity/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/package.json b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/package.json index 68c122f..1e964d1 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/package.json +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/package.json @@ -2,7 +2,7 @@ "name": "com.microsoft.msbuildforunity", "version": "0.8.0", "displayName": "MSBuild for Unity", - "description": "MSBuildForUnity solves the problem of establishing a clear dependency relationships between Unity project and other .NET components such as external (to Unity) C# projects, or NuGet packages. It creates a familiar to .NET developers project structure and ensures that the dependencies are resolves and brought into the Unity project as appropriate.", + "description": "MSBuildForUnity solves the problem of establishing clear dependency relationships between Unity project and other .NET components such as external (to Unity) C# projects, or NuGet packages. It creates a familiar to .NET developers project structure and ensures that the dependencies are resolved and brought into the Unity project as appropriate.", "unity": "2018.1", "dependencies": { }, @@ -23,4 +23,4 @@ "email": "ryan.tremblay@microsoft.com", "url": "https://github.com/microsoft/MSBuildForUnity" } -} \ No newline at end of file +} From ead83b3005d6c7e6a916be7f3db9acbdeb82d371 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 14 Nov 2019 14:31:31 -0800 Subject: [PATCH 13/19] Moved where Unity Major/Minor version is specified (#52) --- .../Editor.InEditor.Any.props.template | 3 --- .../MSBuildForUnity.Common.props.template | 13 ++++++++----- .../Platform.Configuration.Any.props.template | 3 --- .../WSA.Player.IL2CPP.props.template | 2 -- .../MSBuildTemplates/WSA.Player.Net.props.template | 2 -- .../Scripts/Exporters/TemplatedProjectExporter.cs | 13 +++++-------- .../Editor/ProjectGenerator/Scripts/MSBuildTools.cs | 1 - 7 files changed, 13 insertions(+), 24 deletions(-) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Editor.InEditor.Any.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Editor.InEditor.Any.props.template index 131c771..94faca1 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Editor.InEditor.Any.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Editor.InEditor.Any.props.template @@ -2,9 +2,6 @@ $(AssemblySearchPaths); $(DefineConstants); - - - diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template index 88a887a..0204a4f 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template @@ -1,7 +1,10 @@ - - - - - + + + + + + + + \ No newline at end of file diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Platform.Configuration.Any.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Platform.Configuration.Any.props.template index 6e7dbd6..a5f2635 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Platform.Configuration.Any.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/Platform.Configuration.Any.props.template @@ -2,9 +2,6 @@ $(DefineConstants); - - - diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template index 57af61e..c7fb7f3 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.IL2CPP.props.template @@ -8,8 +8,6 @@ false - - diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template index b442c0c..e10dd1b 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/WSA.Player.Net.props.template @@ -12,8 +12,6 @@ v5.0 false - - diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs index 2f78968..fd0a267 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Exporters/TemplatedProjectExporter.cs @@ -136,10 +136,6 @@ public void ExportProject(UnityProjectInfo unityProjectInfo, CSProjectInfo proje else { if (File.Exists(projectPath)) - { - Debug.Log($"Skipping replacing the existing C# project file {projectInfo.Name}"); - } - else { projectFileTemplate.Write(projectPath, projectFileTemplate.Root.CreateReplacementSet()); } @@ -214,6 +210,11 @@ public void GenerateDirectoryPropsFile(UnityProjectInfo unityProjectInfo) rootTemplate.Tokens["GENERATED_OUTPUT_DIRECTORY"].AssignValue(rootReplacementSet, generatedOutputFolder.FullName); rootTemplate.Tokens["CURRENT_UNITY_PLATFORM"].AssignValue(rootReplacementSet, unityProjectInfo.CurrentPlayerPlatform.Name); rootTemplate.Tokens["CURRENT_TARGET_FRAMEWORK"].AssignValue(rootReplacementSet, unityProjectInfo.CurrentPlayerPlatform.TargetFramework.AsMSBuildString()); + + string[] versionParts = Application.unityVersion.Split('.'); + rootTemplate.Tokens["UNITY_MAJOR_VERSION"].AssignValue(rootReplacementSet, versionParts[0]); + rootTemplate.Tokens["UNITY_MINOR_VERSION"].AssignValue(rootReplacementSet, versionParts[1]); + msbuildForUnityCommonTemplate.Write(outputPath, rootReplacementSet); } @@ -521,7 +522,6 @@ private void ProcessPlatformTemplate(ITemplatePart rootPart, TemplateReplacement minUWPPlatform = MSBuildTools.DefaultMinUWPSDK.ToString(); } - string[] versionParts = Application.unityVersion.Split('.'); // This is a try replace because some may hardcode this value rootPart.TryReplaceToken("TARGET_FRAMEWORK", rootReplacementSet, targetFramework.AsMSBuildString()); @@ -540,9 +540,6 @@ private void ProcessPlatformTemplate(ITemplatePart rootPart, TemplateReplacement rootPart.TryReplaceToken("UWP_MIN_PLATFORM_VERSION", rootReplacementSet, minUWPPlatform); } - rootPart.Tokens["UNITY_MAJOR_VERSION"].AssignValue(rootReplacementSet, versionParts[0]); - rootPart.Tokens["UNITY_MINOR_VERSION"].AssignValue(rootReplacementSet, versionParts[1]); - ITemplatePart platformCommonReferencePart = rootPart.Templates["PLATFORM_COMMON_REFERENCE"]; foreach (string reference in platformAssemblyReferencePaths) { diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs index 8cfa7b0..9e822f4 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs @@ -62,7 +62,6 @@ private class BuildTargetChanged : IActiveBuildTargetChanged public void OnActiveBuildTargetChanged(BuildTarget previousTarget, BuildTarget newTarget) { - Debug.Log("Change"); MSBuildProjectBuilder.TryBuildAllProjects(MSBuildProjectBuilder.CleanProfileName); RunCoreAutoGenerate(true); MSBuildProjectBuilder.TryBuildAllProjects(MSBuildProjectBuilder.BuildProfileName); From 351d9e862d3826cd289f6183039c2487fc5c41cc Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Thu, 14 Nov 2019 15:22:20 -0800 Subject: [PATCH 14/19] Added the current MSBuildForUnityVersion --- .../MSBuildTemplates/MSBuildForUnity.Common.props.template | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template index 0204a4f..48454db 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/MSBuildForUnity.Common.props.template @@ -1,5 +1,6 @@ + 0.8.0 From cb0fe4639de47882d425f165424ed2bcf5466902 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Fri, 15 Nov 2019 17:18:46 -0800 Subject: [PATCH 15/19] Responding to Ryan's changes --- .../Assets/Dependencies.meta | 2 +- .../Assets/Dependencies.msb4u.csproj | 2 +- .../Assets/NuGet.config | 4 - .../Assets/Project.Unity.msb4u.sln | 93 +++++++----------- .../IntegratedDependencies.Unity/README.md | 84 +++++++++++++++- .../docs/Assembly-CSharpGeneratedProject.png | Bin 189215 -> 0 bytes .../docs/UWPAsmDef.png | Bin 50223 -> 77683 bytes .../docs/UWPGeneratedProject.png | Bin 180131 -> 0 bytes .../Assets/NewtonsoftDependency/NuGet.config | 4 - .../MSBuildForUnity.csproj | 4 +- ...ependenciesProjectTemplate.csproj.template | 2 +- .../ProjectGenerator/Scripts/MSBuildTools.cs | 2 +- 12 files changed, 123 insertions(+), 74 deletions(-) delete mode 100644 Samples/IntegratedDependencies.Unity/docs/Assembly-CSharpGeneratedProject.png delete mode 100644 Samples/IntegratedDependencies.Unity/docs/UWPGeneratedProject.png diff --git a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.meta b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.meta index 0312feb..8511d7f 100644 --- a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.meta +++ b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 032105be82167f14b8fa390a9665ea5f +guid: dd12e8c61779b6b4fb1ddc8d89f15829 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj index cc33d76..c39e39d 100644 --- a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj +++ b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj @@ -31,7 +31,7 @@ - + diff --git a/Samples/IntegratedDependencies.Unity/Assets/NuGet.config b/Samples/IntegratedDependencies.Unity/Assets/NuGet.config index f24e599..ce1bf2c 100644 --- a/Samples/IntegratedDependencies.Unity/Assets/NuGet.config +++ b/Samples/IntegratedDependencies.Unity/Assets/NuGet.config @@ -4,8 +4,4 @@ - - - -
\ No newline at end of file diff --git a/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln b/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln index 5be0f96..c067a8d 100644 --- a/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln +++ b/Samples/IntegratedDependencies.Unity/Assets/Project.Unity.msb4u.sln @@ -3,53 +3,48 @@ Microsoft Visual Studio Solution File, Format Version 12.00 VisualStudioVersion = 15.0.28307.539 MinimumVisualStudioVersion = 10.0.40219.1 # This file is generated by MSBuildForUnity, it will get updated when the assembly definitions change. -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Component.WSA", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\Assets\WSASpecific\Component.WSA.msb4u.csproj", "{BB41A40A-FD6B-AD74-0865-83AB52977BDC}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.TextMeshPro", "C:\Projects\MSBuildForUnity\Development\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.TextMeshPro.msb4u.csproj", "{6055BE8E-BEFD-69E4-8B49-212B09B47B2F}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.TextMeshPro", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.TextMeshPro.msb4u.csproj", "{6055BE8E-BEFD-69E4-8B49-212B09B47B2F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.PackageManagerUI.Editor", "C:\Projects\MSBuildForUnity\Development\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.PackageManagerUI.Editor.msb4u.csproj", "{15A615C7-33AA-2409-09FE-0B28B0D5143C}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.PackageManagerUI.Editor", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.PackageManagerUI.Editor.msb4u.csproj", "{15A615C7-33AA-2409-09FE-0B28B0D5143C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.CollabProxy.Editor", "C:\Projects\MSBuildForUnity\Development\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.CollabProxy.Editor.msb4u.csproj", "{645165C8-1694-74BF-BBEB-8FB0BCFD26F5}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.CollabProxy.Editor", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.CollabProxy.Editor.msb4u.csproj", "{645165C8-1694-74BF-BBEB-8FB0BCFD26F5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSBuildForUnity", "C:\Projects\MSBuildForUnity\Development\Samples\IntegratedDependencies.Unity\MSBuild\Projects\MSBuildForUnity.msb4u.csproj", "{0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSBuildForUnity", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\MSBuildForUnity.msb4u.csproj", "{0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.Analytics.DataPrivacy", "C:\Projects\MSBuildForUnity\Development\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.Analytics.DataPrivacy.msb4u.csproj", "{0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.Analytics.DataPrivacy", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.Analytics.DataPrivacy.msb4u.csproj", "{0FDA7EBE-61AB-2164-383D-10E32EFB9C6E}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.TextMeshPro.Editor", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.TextMeshPro.Editor.msb4u.csproj", "{6546D776-5B41-65B4-0850-B3667F981C26}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unity.TextMeshPro.Editor", "C:\Projects\MSBuildForUnity\Development\Samples\IntegratedDependencies.Unity\MSBuild\Projects\Unity.TextMeshPro.Editor.msb4u.csproj", "{6546D776-5B41-65B4-0850-B3667F981C26}" ProjectSection(ProjectDependencies) = postProject {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} = {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\Assets\Assembly-CSharp.msb4u.csproj", "{48D939EA-0E9B-462A-804A-F79457D08B95}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Assembly-CSharp", "C:\Projects\MSBuildForUnity\Development\Samples\IntegratedDependencies.Unity\Assets\Assembly-CSharp.msb4u.csproj", "{FE8A6F42-D26E-4974-ADA4-18610F218C67}" ProjectSection(ProjectDependencies) = postProject {6546D776-5B41-65B4-0850-B3667F981C26} = {6546D776-5B41-65B4-0850-B3667F981C26} {15A615C7-33AA-2409-09FE-0B28B0D5143C} = {15A615C7-33AA-2409-09FE-0B28B0D5143C} {645165C8-1694-74BF-BBEB-8FB0BCFD26F5} = {645165C8-1694-74BF-BBEB-8FB0BCFD26F5} - {BB41A40A-FD6B-AD74-0865-83AB52977BDC} = {BB41A40A-FD6B-AD74-0865-83AB52977BDC} {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD} = {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD} {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} = {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E} = {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E} EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dependencies", "D:\Projects\NuGet\MSBuildForUnity2\Samples\IntegratedDependencies.Unity\Assets\Dependencies.msb4u.csproj", "{6AEB67F2-4579-4537-A6BD-88861A8525C2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dependencies", "C:\Projects\MSBuildForUnity\Development\Samples\IntegratedDependencies.Unity\Assets\Dependencies.msb4u.csproj", "{DFB08FA4-CBE1-497A-9F1D-9C856FF2428A}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Imported Packages", "Imported Packages", "{E17FC267-FD7D-405C-A3DF-F405744E3097}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Imported Packages", "Imported Packages", "{1208A866-B74A-4F43-BC60-D7D1074D9230}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External Packages", "External Packages", "{96FBE624-B6A1-426C-827D-FC68411DA48D}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External Packages", "External Packages", "{364236E7-C3A1-466B-A98A-43F9BA96A7E7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -65,16 +60,6 @@ Global Player|WSA = Player|WSA EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|Android.ActiveCfg = InEditor|Android - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|iOS.ActiveCfg = InEditor|iOS - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WSA.ActiveCfg = InEditor|WSA - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|Android.ActiveCfg = Player|Android - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|iOS.ActiveCfg = Player|iOS - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|WSA.ActiveCfg = Player|WSA {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|Android.ActiveCfg = InEditor|Android {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|iOS.ActiveCfg = InEditor|iOS {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 @@ -135,22 +120,16 @@ Global {6546D776-5B41-65B4-0850-B3667F981C26}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 {6546D776-5B41-65B4-0850-B3667F981C26}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 {6546D776-5B41-65B4-0850-B3667F981C26}.Player|WSA.ActiveCfg = Player|WSA - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|Android.ActiveCfg = InEditor|Android - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|iOS.ActiveCfg = InEditor|iOS - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WSA.ActiveCfg = InEditor|WSA - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|Android.ActiveCfg = Player|Android - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|iOS.ActiveCfg = Player|iOS - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WSA.ActiveCfg = Player|WSA - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|Android.Build.0 = InEditor|Android - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|iOS.Build.0 = InEditor|iOS - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.InEditor|WSA.Build.0 = InEditor|WSA - {BB41A40A-FD6B-AD74-0865-83AB52977BDC}.Player|WSA.Build.0 = Player|WSA + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|Android.ActiveCfg = InEditor|Android + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|iOS.ActiveCfg = InEditor|iOS + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|WindowsStandalone32.ActiveCfg = InEditor|WindowsStandalone32 + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|WindowsStandalone64.ActiveCfg = InEditor|WindowsStandalone64 + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|WSA.ActiveCfg = InEditor|WSA + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|Android.ActiveCfg = Player|Android + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|iOS.ActiveCfg = Player|iOS + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|WindowsStandalone32.ActiveCfg = Player|WindowsStandalone32 + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|WindowsStandalone64.ActiveCfg = Player|WindowsStandalone64 + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|WSA.ActiveCfg = Player|WSA {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|Android.Build.0 = InEditor|Android {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|iOS.Build.0 = InEditor|iOS {6055BE8E-BEFD-69E4-8B49-212B09B47B2F}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 @@ -191,27 +170,27 @@ Global {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 {6546D776-5B41-65B4-0850-B3667F981C26}.InEditor|WSA.Build.0 = InEditor|WSA - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|Android.Build.0 = InEditor|Android - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|iOS.Build.0 = InEditor|iOS - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 - {48D939EA-0E9B-462A-804A-F79457D08B95}.InEditor|WSA.Build.0 = InEditor|WSA - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|Android.Build.0 = Player|Android - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|iOS.Build.0 = Player|iOS - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WindowsStandalone32.Build.0 = Player|WindowsStandalone32 - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WindowsStandalone64.Build.0 = Player|WindowsStandalone64 - {48D939EA-0E9B-462A-804A-F79457D08B95}.Player|WSA.Build.0 = Player|WSA + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|Android.Build.0 = InEditor|Android + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|iOS.Build.0 = InEditor|iOS + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|WindowsStandalone32.Build.0 = InEditor|WindowsStandalone32 + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|WindowsStandalone64.Build.0 = InEditor|WindowsStandalone64 + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.InEditor|WSA.Build.0 = InEditor|WSA + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|Android.Build.0 = Player|Android + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|iOS.Build.0 = Player|iOS + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|WindowsStandalone32.Build.0 = Player|WindowsStandalone32 + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|WindowsStandalone64.Build.0 = Player|WindowsStandalone64 + {FE8A6F42-D26E-4974-ADA4-18610F218C67}.Player|WSA.Build.0 = Player|WSA EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} = {E17FC267-FD7D-405C-A3DF-F405744E3097} - {15A615C7-33AA-2409-09FE-0B28B0D5143C} = {E17FC267-FD7D-405C-A3DF-F405744E3097} - {645165C8-1694-74BF-BBEB-8FB0BCFD26F5} = {E17FC267-FD7D-405C-A3DF-F405744E3097} - {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E} = {E17FC267-FD7D-405C-A3DF-F405744E3097} - {6546D776-5B41-65B4-0850-B3667F981C26} = {E17FC267-FD7D-405C-A3DF-F405744E3097} - {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD} = {96FBE624-B6A1-426C-827D-FC68411DA48D} + {6055BE8E-BEFD-69E4-8B49-212B09B47B2F} = {1208A866-B74A-4F43-BC60-D7D1074D9230} + {15A615C7-33AA-2409-09FE-0B28B0D5143C} = {1208A866-B74A-4F43-BC60-D7D1074D9230} + {645165C8-1694-74BF-BBEB-8FB0BCFD26F5} = {1208A866-B74A-4F43-BC60-D7D1074D9230} + {0FDA7EBE-61AB-2164-383D-10E32EFB9C6E} = {1208A866-B74A-4F43-BC60-D7D1074D9230} + {6546D776-5B41-65B4-0850-B3667F981C26} = {1208A866-B74A-4F43-BC60-D7D1074D9230} + {0DF1F49A-50F1-5354-5BF9-9E3DBB6674AD} = {364236E7-C3A1-466B-A98A-43F9BA96A7E7} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {89752EEF-6413-4D53-BA9D-DCA0707F134E} diff --git a/Samples/IntegratedDependencies.Unity/README.md b/Samples/IntegratedDependencies.Unity/README.md index 64d7d4f..90eefd9 100644 --- a/Samples/IntegratedDependencies.Unity/README.md +++ b/Samples/IntegratedDependencies.Unity/README.md @@ -20,7 +20,7 @@ Generation is split into two types of files being created: There is a limited set of times when the projects would be automatically regenerated: -- When you enable `Generation Enabled`, it will go ahead and generate. +- When you enable `Auto Generation Enabled`, it will go ahead and generate. - When you launch Unity - When you switch platforms - Every time a rebuild happens, we do a super fast regeneration of MSBuildForUnity.common.props. @@ -29,7 +29,44 @@ There is a limited set of times when the projects would be automatically regener In order to add dependencies to your project, you can open any C# project under `Assets/` or `Packages/` folder and modify it. For example, here is the `Assembly-CSharp.msb4u.csproj`. -![Assembly-CSharp.msb4u.csproj](docs\Assembly-CSharpGeneratedProject.png) +```xml + + + + + + + + + + + + + + + + + + + +``` This project has been modified to depend on an external C# project that is unrelated to Unity. Thus when this project is built, it will build that dependency and bring it into the Unity Assets folder. @@ -41,7 +78,48 @@ Furthermore, this sample includes an example of how to specify a dependency for The generated project `Assets\WSASpecific\Component.WSA.msb4u.csproj` contains a dependency on `CommonLibrary.WSA.csproj` that would get built and pulled in only when the Editor is set to UWP platform. -![Dependencies.msb4u.csproj](docs\UWPGeneratedProject.png) +```xml + + + + + + + + + + + + + + + + + + + +``` > As you can see, this project also incudes the `NewtonSoft.Json` NuGet package reference that will be brought in. diff --git a/Samples/IntegratedDependencies.Unity/docs/Assembly-CSharpGeneratedProject.png b/Samples/IntegratedDependencies.Unity/docs/Assembly-CSharpGeneratedProject.png deleted file mode 100644 index 442d9c4c670d0c88a163d28ebcbecc55cfa927d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189215 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

lnWOt-u<1s*arrUQxJK409amf$Tgh% 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ℜ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

6VW{vURD~dZ9~i;;0@0bxilv;izD8fJrO_D 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 p{lM8b|C-AQVw_ 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 - - - - \ No newline at end of file diff --git a/Source/MSBuildTools.Unity.NuGet/MSBuildForUnity.csproj b/Source/MSBuildTools.Unity.NuGet/MSBuildForUnity.csproj index 7b6656e..34918bf 100644 --- a/Source/MSBuildTools.Unity.NuGet/MSBuildForUnity.csproj +++ b/Source/MSBuildTools.Unity.NuGet/MSBuildForUnity.csproj @@ -34,12 +34,12 @@ 0 $(MajorVersion).$(MinorVersion).$(RevisionVersion) - + $(Version)-$(BUILD_BUILDID) $(Version) $(MajorVersion).$(MinorVersion) - $(AssemblyVersion).$(RevisionVersion).* + $(AssemblyVersion).$(RevisionVersion).0 $(AssemblyVersion).$(RevisionVersion).$(BUILD_BUILDID) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template index e42a19d..5eed752 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/MSBuildTemplates/DependenciesProjectTemplate.csproj.template @@ -33,7 +33,7 @@ - + diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs index 9e822f4..8284547 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/MSBuildTools.cs @@ -78,7 +78,7 @@ public void OnActiveBuildTargetChanged(BuildTarget previousTarget, BuildTarget n }; public const string CSharpVersion = "7.3"; - public const string AutoGenerate = "MSBuild/Generation Enabled"; + public const string AutoGenerate = "MSBuild/Auto Generation Enabled"; private static readonly string TokenFilePath = Path.Combine(Utilities.ProjectPath, "Temp", "PropsGeneratedThisEditorInstance.token"); public static readonly Version DefaultMinUWPSDK = new Version("10.0.14393.0"); From d141026290e930f9c0a02e69f33308f2f26f2607 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Mon, 18 Nov 2019 20:52:38 -0800 Subject: [PATCH 16/19] Moved Dependencies project --- .../Assets/Dependencies.msb4u.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj index c39e39d..96537e3 100644 --- a/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj +++ b/Samples/IntegratedDependencies.Unity/Assets/Dependencies.msb4u.csproj @@ -31,9 +31,9 @@ - - + + From 786671ecfb49dda328c40b409175e7cf1fbb5237 Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Mon, 18 Nov 2019 20:59:58 -0800 Subject: [PATCH 17/19] Re-enabled default profiles --- .../Editor/ProjectBuilder/MSBuildProjectReference.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs index 4384f67..8809f67 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs @@ -34,7 +34,7 @@ public sealed partial class MSBuildProjectReference : ScriptableObject [SerializeField] [Tooltip("Named profiles to configure different build options.")] - private MSBuildBuildProfile[] profiles; + private MSBuildBuildProfile[] profiles = DefaultProfiles; ///

/// Creates an in-memory instance that can resolve the full path to the MSBuild project. @@ -58,9 +58,9 @@ public static MSBuildProjectReference FromMSBuildProject(string assetRelativePat { msBuildProjectReference.profiles = profiles.ToArray(); } - else if (!Path.GetFileNameWithoutExtension(assetRelativePath).EndsWith(".msb4u") || Path.GetFileName(assetRelativePath).Equals("Dependencies.msb4u.csproj")) + else if (Path.GetFileNameWithoutExtension(assetRelativePath).EndsWith(".msb4u") && !Path.GetFileName(assetRelativePath).Equals("Dependencies.msb4u.csproj")) { - msBuildProjectReference.profiles = DefaultProfiles; + msBuildProjectReference.profiles = null; } return msBuildProjectReference; From 1e5128e7665a946cfad9074d0cad70ee39c6228d Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Mon, 18 Nov 2019 21:12:20 -0800 Subject: [PATCH 18/19] Undoing auto-formatting --- .../Editor/ProjectBuilder/MSBuildProjectReference.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs index 8809f67..b059f76 100644 --- a/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs +++ b/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectBuilder/MSBuildProjectReference.cs @@ -79,20 +79,20 @@ public string ProjectPath } // Determine the absolute path of the MSBuild project (based on the projectPath being relative to the MSBuildProjectReference asset). - if (!string.IsNullOrEmpty(projectPath)) + if (!string.IsNullOrEmpty(this.projectPath)) { string unityProjectPath = Path.GetDirectoryName(Application.dataPath); string assetAbsolutePath = Path.Combine(unityProjectPath, assetRelativePath); string assetAbsoluteDirectory = Path.GetDirectoryName(assetAbsolutePath); - return Path.GetFullPath(Path.Combine(assetAbsoluteDirectory, projectPath)); + return Path.GetFullPath(Path.Combine(assetAbsoluteDirectory, this.projectPath)); } return string.Empty; } } - public BuildEngine BuildEngine => buildEngine; + public BuildEngine BuildEngine => this.buildEngine; - public IEnumerable<(string name, bool autoBuild, string arguments)> Profiles => profiles == null ? Enumerable.Empty<(string, bool, string)>() : profiles.Select(profile => (profile.Name, profile.AutoBuild, profile.Arguments)); + public IEnumerable<(string name, bool autoBuild, string arguments)> Profiles => this.profiles == null ? Enumerable.Empty<(string, bool, string)>() : this.profiles.Select(profile => (profile.Name, profile.AutoBuild, profile.Arguments)); } } \ No newline at end of file From 70343d8d97946314784db3bda2e33f64cbdaa3ea Mon Sep 17 00:00:00 2001 From: Andrei Borodin Date: Mon, 18 Nov 2019 21:15:19 -0800 Subject: [PATCH 19/19] Flipped backslash to forward slash --- Samples/IntegratedDependencies.Unity/README.md | 12 ++++++------ Samples/SimpleNuGetDependency.Unity/README.md | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Samples/IntegratedDependencies.Unity/README.md b/Samples/IntegratedDependencies.Unity/README.md index 90eefd9..57620bf 100644 --- a/Samples/IntegratedDependencies.Unity/README.md +++ b/Samples/IntegratedDependencies.Unity/README.md @@ -6,9 +6,9 @@ This project shows a considerably more robust usage of MSBuildForUnity for your When you open this sample in Unity, you will note that project generation is enabled: -![Project Generation Enabled](docs\ProjectGenerationEnabled.png) +![Project Generation Enabled](docs/ProjectGenerationEnabled.png) -> This is persisted in a checked-in file at `IntegratedDependencies.Unity\MSBuild\settings.json`. +> This is persisted in a checked-in file at `IntegratedDependencies.Unity/MSBuild/settings.json`. Generation is split into two types of files being created: @@ -72,11 +72,11 @@ This project has been modified to depend on an external C# project that is unrel ### Platform Specific Dependency -Furthermore, this sample includes an example of how to specify a dependency for a specific platform. The Assembly Definition at `Assets\WSASpecific\Component.WSA.asmdef` is marked to be built for `Universal Windows Platform` and `Editor` platforms; additionally it specifies a `UNITY_WSA` define constraint that only allows it to be compiled when UWP platform is selected. +Furthermore, this sample includes an example of how to specify a dependency for a specific platform. The Assembly Definition at `Assets/WSASpecific/Component.WSA.asmdef` is marked to be built for `Universal Windows Platform` and `Editor` platforms; additionally it specifies a `UNITY_WSA` define constraint that only allows it to be compiled when UWP platform is selected. -![Dependencies.msb4u.csproj](docs\UWPAsmDef.png) +![Dependencies.msb4u.csproj](docs/UWPAsmDef.png) -The generated project `Assets\WSASpecific\Component.WSA.msb4u.csproj` contains a dependency on `CommonLibrary.WSA.csproj` that would get built and pulled in only when the Editor is set to UWP platform. +The generated project `Assets/WSASpecific/Component.WSA.msb4u.csproj` contains a dependency on `CommonLibrary.WSA.csproj` that would get built and pulled in only when the Editor is set to UWP platform. ```xml @@ -127,7 +127,7 @@ The generated project `Assets\WSASpecific\Component.WSA.msb4u.csproj` contains a MSBuild Tools for Unity auto builds the `Dependencies.msb4u.csproj` at various times in order for these dependencies to be pulled in. If for some reason this doesn't happen, you can select the `Dependencies.msb4u` item under `Assets/` folder and press `Build` yourself. -![Dependencies.msb4u.csproj](docs\CSProjectBuild.png) +![Dependencies.msb4u.csproj](docs/CSProjectBuild.png) ## Known Limitations diff --git a/Samples/SimpleNuGetDependency.Unity/README.md b/Samples/SimpleNuGetDependency.Unity/README.md index 9153994..5509c2b 100644 --- a/Samples/SimpleNuGetDependency.Unity/README.md +++ b/Samples/SimpleNuGetDependency.Unity/README.md @@ -11,7 +11,7 @@ In order for you to declare the dependency, you need several key things: - A .gitignore that ensures only the necessary files are seen by git. - **Temporary:** A NuGet.config that contains the special feed of MSBuildForUnity NuGet package. This requirement will go away soon. -This sample has it set up under the following location `Assets\NewtonSoftDependency`. +This sample has it set up under the following location `Assets/NewtonSoftDependency`. ### C# Project File Structure @@ -26,9 +26,9 @@ The project file structure has several required parts to it: - Package reference to `MSBuildForUnity` NuGet package that enables the correct resolution of dependencies. - `Sdk.props` and `Sdk.targets` import that doesn't produce a dll (`Microsoft.Build.NoTargets`). -The `Assets\NewtonSoftDependency\NewtonSoftDependency.csproj` contains all of this, plus the NuGet reference to "NewtonSoft.Json" and is a total of 33 lines long. +The `Assets/NewtonSoftDependency/NewtonSoftDependency.csproj` contains all of this, plus the NuGet reference to "NewtonSoft.Json" and is a total of 33 lines long. -![C# Project File Contents](docs\CSProjectContents.png) +![C# Project File Contents](docs/CSProjectContents.png) ## The Process

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 literal 50223 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