Browse Source

mxg:添加多版本Revit支持

mengxiangge 5 years ago
parent
commit
afdd47a4af

+ 1 - 0
.gitignore

@@ -17,3 +17,4 @@
 /JBIM/RevitExport/obj/
 /JBIM/ServiceDataCheck/obj
 /JBIM/RevitToJBim/bin/x64/Debug
+/JBIM/StartVisionSelector/obj/Debug

+ 34 - 0
JBIM/Dlls/LoadingRevitDll.txt

@@ -0,0 +1,34 @@
+RevitNET
+RevitAPI
+RevitAPIFoundation
+UtilityAPI
+GeomUtilAPI
+RevitDBAPI
+GraphicsAPI
+FamilyDBAPI
+EssentialsDBAPI
+RoomAreaPlanDBAPI
+ArrayElemsDBAPI
+StructuralDBAPI
+HostObjDBAPI
+SculptingDBAPI
+ElementGroupDBAPI
+CurtainGridFamilyDBAPI
+SiteDBAPI
+DetailDBAPI
+BuildingSystemsDBAPI
+EnergyAnalysisDBAPI
+AnalysisAppsDBAPI
+StructuralAnalysisDBAPI
+RebarDBAPI
+AssemblyDBAPI
+APIDBAPI
+DPartDBAPI
+StairRampDBAPI
+InterfaceUtilAPI
+InterfaceAPI
+PointCloudAccessAPI
+NumberingDBAPI
+MassingDBAPI
+PackageContentsParser
+APIInterop

BIN
JBIM/Dlls/SAGA.DotNetUtils.dll


BIN
JBIM/Dlls/SAGA.RevitAPI.dll


+ 2 - 5
JBIM/ExportStart/ExportStart.csproj

@@ -41,9 +41,6 @@
     <OutputPath>bin\x64\Release\</OutputPath>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="RevitAddInUtility">
-      <HintPath>..\Dlls\RevitAddInUtility.dll</HintPath>
-    </Reference>
     <Reference Include="RevitAPI">
       <HintPath>..\Dlls\RevitAPI.dll</HintPath>
     </Reference>
@@ -52,7 +49,7 @@
     </Reference>
     <Reference Include="SAGA.DotNetUtils, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\RevitExport\bin\x64\Debug\SAGA.DotNetUtils.dll</HintPath>
+      <HintPath>..\Dlls\SAGA.DotNetUtils.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
@@ -68,7 +65,7 @@
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="RevitCoreContext.cs" />
-    <Compile Include="RevitVisionUtil.cs" />
+    <Compile Include="StarterConst.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="App.config" />

+ 23 - 21
JBIM/ExportStart/Program.cs

@@ -1,14 +1,6 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-using Autodesk.Revit.DB;
-using Autodesk.Revit.DB.Mechanical;
-using Autodesk.RevitAddIns;
+using Autodesk.Revit.DB;
 using ServiceRevitLib;
+using System;
 
 //using RevitToJBim.Common;
 
@@ -23,18 +15,26 @@ namespace ExportStart
         [STAThread]
         static void Main(string[] args)
         {
-            string path = @"E:\导出测试\test.rvt";
-            //path = @"C:\Users\SAGACLOUD\Desktop\数据检查\testR18.rvt";
-            //path = @"C:\Users\SAGACLOUD\Desktop\数据检查\testR16.rvt";
-            //path = @"D:\测试模型\OLD\机电模型2015.09.06\F5机电(改位置)\revit\5风管.rvt";
-            string command = "Export";
+            //RevitCoreContext.Instance.Run();
+            string path = @"E:\导出测试\testR17.rvt";
+            try
+            {
+                path = args[0];
+               
+                string command = "Export";
 
-            var app = RevitCoreContext.Instance.Application;
-            var doc = app.OpenDocumentFile(path);
-            Export(doc);
-            Check(doc);
-            //Console.WriteLine("RevitVision:"+RevitVisionUtil.GetRevitVision(path));
-            Console.ReadKey();
+                var app = RevitCoreContext.Instance.Application;
+                var doc = app.OpenDocumentFile(path);
+                Export(doc);
+                Check(doc);
+                //File.AppendAllLines(@"D:\RevitDll.txt",RevitCoreContext.NeedAssemblys );
+                RevitCoreContext.Instance.Stop();
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e);
+            }
+            
         }
 
         public static void Export(Document doc)
@@ -49,6 +49,7 @@ namespace ExportStart
             catch (Exception e)
             {
                 Console.WriteLine("导出失败");
+                throw;
                 Console.WriteLine(e.StackTrace);
             }
         }
@@ -66,6 +67,7 @@ namespace ExportStart
             catch (Exception e)
             {
                 Console.WriteLine("导出失败");
+                throw;
                 Console.WriteLine(e.StackTrace);
             }
         }

+ 26 - 13
JBIM/ExportStart/RevitCoreContext.cs

@@ -3,18 +3,15 @@
  * 创 建 者:Garrett
  * 创建日期:2019/6/27 11:10:20
  * ==============================================================================*/
+using Autodesk.Revit;
+using Autodesk.Revit.ApplicationServices;
+using Autodesk.Revit.DB;
+using SAGA.DotNetUtils.Revit;
 using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
-using System.Net.Mime;
 using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-using Autodesk.Revit;
-using Autodesk.Revit.ApplicationServices;
-using Autodesk.Revit.DB;
-using Autodesk.RevitAddIns;
 
 namespace ExportStart
 {
@@ -22,7 +19,20 @@ namespace ExportStart
     {
         // 此路径为动态反射搜索路径 、 此路径可为任意路径(只要路径下有RevitNET 所需依赖项即可,完整依赖项可在 Naviswork 2016 下面找到)
 
-        static readonly string[] Searchs = RevitProductUtility.GetAllInstalledRevitProducts().Where(t => t.Name == "Revit 2017").Select(x => x.InstallLocation).ToArray();
+        private static readonly string[] Searchs = GetRevitProductPath();
+        //new[] { @"E:\Program Files\Autodesk\Revit 2017" };
+        //new []{ @"E:\Program Files\Autodesk\Revit 2018" };
+        /// <summary>
+        /// 选择版本时,预先将版本信息写在RevitFileVision.txt文件中
+        /// </summary>
+        /// <returns></returns>
+        static string[] GetRevitProductPath()
+        {
+            //保存版本号
+            var vision = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, StarterConst.RevitFileVisionFile));
+            var revitVision = $"Revit {vision}";
+            return RevitProductUtility.GetAllInstalledRevitProducts().Where(t => Directory.GetParent(t).Name == revitVision).ToArray();
+        }
 
         static readonly object lockobj = new object();
 
@@ -86,14 +96,16 @@ namespace ExportStart
         private static Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
         {
             var assemblyName = new AssemblyName(args.Name);
-
+            //File.AppendAllText(@"E:\startlog.txt","args:"+ args.Name + "\r\n");
             foreach (var item in Searchs)
             {
                 var file = string.Format("{0}.dll", System.IO.Path.Combine(item, assemblyName.Name));
 
                 if (File.Exists(file))
                 {
-                    NeedAssemblys.Add(assemblyName.Name);
+                    AddAssemblys(assemblyName.Name);
+                    //File.Copy(file,Path.Combine(@"D:\Revit\RevitExport\JBIM\OutputDll\2018",assemblyName.Name+".dll"),true);
+
                     return Assembly.LoadFile(file);
                 }
             }
@@ -102,10 +114,11 @@ namespace ExportStart
         }
         public static List<string> NeedAssemblys = new List<string>();
 
-        public static void PrintAllAssemblys()
+        public static void AddAssemblys(string str)
         {
-            string str = string.Join("\r\n", NeedAssemblys);
-            Console.WriteLine(str);
+            if(!NeedAssemblys.Contains(str))
+                NeedAssemblys.Add(str);
         }
+
     }
 }

+ 0 - 60
JBIM/ExportStart/RevitVisionUtil.cs

@@ -1,60 +0,0 @@
-/* ==============================================================================
- * 功能描述:RevitVisionUtil  
- * 创 建 者:Garrett
- * 创建日期:2019/6/28 9:25:34
- * ==============================================================================*/
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-
-namespace ExportStart
-{
-    /// <summary>
-    /// RevitVisionUtil
-    /// </summary>
-    public class RevitVisionUtil
-    {
-        /// <summary>
-        /// 获取Revit文件的版本
-        /// </summary>
-        /// <param name="path">文件路径</param>
-        /// <returns></returns>
-        public static string GetRevitVision(string path)
-        {
-            string revitVision = null;
-            FileStream stream = new FileStream(path, FileMode.Open);
-
-            int size = 1024 * 1024;
-            byte[] bytes = new byte[size];
-
-            
-            while (stream.Read(bytes, 0, size) > 0)
-            {
-                string str = Encoding.Unicode.GetString(bytes);
-                //if (str.Contains("2014"))
-                //{
-                //    revitVision = "2014";
-
-                //    File.WriteAllText(@"D:\abc.txt", str);
-                //    System.Diagnostics.Process.Start("notepad.exe", path);
-                //    break;
-                //}
-
-                string pattern = @"Autodesk Revit \d{4}";
-                var match = Regex.Match(str, pattern);
-                if (match.Success)
-                {
-                    revitVision = match.Value.Substring(match.Length - 4, 4);
-
-                    //File.WriteAllText(@"D:\abc.txt", str);
-                    break;
-                }
-            }
-            return revitVision;
-        }
-    }
-}

+ 22 - 0
JBIM/ExportStart/StarterConst.cs

@@ -0,0 +1,22 @@
+/* ==============================================================================
+ * 功能描述:StarterConst  
+ * 创 建 者:Garrett
+ * 创建日期:2019/8/1 9:23:15
+ * ==============================================================================*/
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ExportStart
+{
+    /// <summary>
+    /// StarterConst
+    /// </summary>
+    class StarterConst
+    {      
+        //Revit文件版本信息存储的位置
+        public const string RevitFileVisionFile = "RevitFileVision.txt";
+    }
+}

+ 6 - 0
JBIM/JBIM.sln

@@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExportStart", "ExportStart\
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceDataCheck", "ServiceDataCheck\ServiceDataCheck.csproj", "{7B748B09-DC20-4406-85A3-101E7833F8CE}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartVisionSelector", "StartVisionSelector\StartVisionSelector.csproj", "{483CB146-0C1D-4865-AD34-FB0BBFFDE4D0}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -39,6 +41,10 @@ Global
 		{7B748B09-DC20-4406-85A3-101E7833F8CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{7B748B09-DC20-4406-85A3-101E7833F8CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{7B748B09-DC20-4406-85A3-101E7833F8CE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{483CB146-0C1D-4865-AD34-FB0BBFFDE4D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{483CB146-0C1D-4865-AD34-FB0BBFFDE4D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{483CB146-0C1D-4865-AD34-FB0BBFFDE4D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{483CB146-0C1D-4865-AD34-FB0BBFFDE4D0}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 1 - 1
JBIM/RevitToJBim/MbiExport.cs

@@ -50,7 +50,7 @@ namespace RevitToJBim
                 string fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
                 string path = Path.Combine(@"D:\", $"{fileName}.json");
                 File.WriteAllText(path, result);
-                System.Diagnostics.Process.Start("notepad.exe", path);
+                //System.Diagnostics.Process.Start("notepad.exe", path);
             }
             catch (Exception ex)
             {

+ 0 - 3
JBIM/RevitToJBim/RevitToJBim.csproj

@@ -43,9 +43,6 @@
     <Reference Include="SAGA.DotNetUtils">
       <HintPath>..\Dlls\SAGA.DotNetUtils.dll</HintPath>
     </Reference>
-    <Reference Include="SAGA.RevitAPI">
-      <HintPath>..\Dlls\SAGA.RevitAPI.dll</HintPath>
-    </Reference>
     <Reference Include="SAGA.RevitUtils">
       <HintPath>..\Dlls\SAGA.RevitUtils.dll</HintPath>
     </Reference>

+ 0 - 3
JBIM/ServiceDataCheck/ServiceDataCheck.csproj

@@ -70,9 +70,6 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Net.Http" />
     <Reference Include="System.Xml" />
-    <Reference Include="UIFramework">
-      <HintPath>E:\Program Files\Autodesk\Revit 2017\UIFramework.dll</HintPath>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="CheckFactory.cs" />

+ 1 - 1
JBIM/ServiceDataCheck/TestCommand.cs

@@ -29,7 +29,7 @@ namespace ServiceRevitLib
                 string fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
                 string path = Path.Combine(@"D:\", $"DataCheck{fileName}.json");
                 File.WriteAllText(path, result);
-                System.Diagnostics.Process.Start("notepad.exe", path);
+                //System.Diagnostics.Process.Start("notepad.exe", path);
             }
             catch (Exception e)
             {

+ 80 - 0
JBIM/StartVisionSelector/Program.cs

@@ -0,0 +1,80 @@
+using SAGA.DotNetUtils.Revit;
+using System;
+using System.Diagnostics;
+using System.IO;
+
+namespace StartVisionSelector
+{
+    public class Program
+    {
+
+        public static void Main(string[] args)
+        {
+            string path = @"E:\导出测试\testR17.rvt";
+            //path = @"E:\导出测试\testR18.rvt";
+            //path = @"E:\导出测试\testR16.rvt";
+
+            Console.WriteLine("start");
+            #region 保存版本号
+
+            //保存版本号
+            var runPath = AppDomain.CurrentDomain.BaseDirectory;
+            var revitVision = RevitVisionUtil.GetRevitVision(path);
+            File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, SelectorConst.RevitFileVisionFile), revitVision);
+
+            #endregion
+
+            #region 删除生成的Revit dll
+
+            var dllsPath = Path.Combine(Directory.GetParent(runPath).Parent.FullName, "Dlls");
+            var loadingRevitPath = Path.Combine(dllsPath, SelectorConst.LoadingRevit);
+            var revitdlls = Path.Combine(dllsPath, $"Revit{revitVision}");
+            var revitdllDirectoryInfo = new DirectoryInfo(revitdlls);
+
+            //先删除,后Copy,如果可以指定Revit的安装目录,不需要Copy
+            #region Del RevitDll
+
+            foreach (string loadingItem in File.ReadAllLines(loadingRevitPath))
+            {
+                string destFile = Path.Combine(runPath, $"{loadingItem}.dll");
+                if(File.Exists(destFile))
+                    File.Delete(destFile);
+            }
+
+            #endregion
+            
+            #endregion
+
+            #region Copy RevitAddInUtility.dll
+
+            //var revitAddInDll = revitdllDirectoryInfo.GetFiles(SelectorConst.RevitAddInUtilityDll);
+            //if (revitAddInDll.Length != 0)
+            //    foreach (FileInfo fileInfo in revitAddInDll)
+            //    {
+            //        string destFile = Path.Combine(runPath, fileInfo.Name);
+            //        fileInfo.CopyTo(destFile, true);
+            //    }
+
+            #endregion
+
+            #region 启动
+
+            Process process = new Process();//AppDomain.CurrentDomain.BaseDirectory +
+            process.StartInfo.FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ExportStart.exe");//执行的exe路径
+            process.StartInfo.UseShellExecute = false;//不显示shell
+            process.StartInfo.CreateNoWindow = true;//不创建窗口
+            process.StartInfo.RedirectStandardInput = true;//打开流输入
+            process.StartInfo.RedirectStandardOutput = true;//打开流输出
+            process.StartInfo.RedirectStandardError = true;//打开错误流
+            process.StartInfo.Arguments = "\"" + path + "\"";//输入参数,多个参数使用空间分割,如果一个参数包含空格,使用""包括此参数
+            process.Start();//执行
+            string msg = process.StandardOutput.ReadToEnd();//读取输出
+            process.WaitForExit();//等待执行完成
+            process.Close();//结束
+
+            #endregion
+            Console.WriteLine("end");
+            //Console.ReadKey();
+        }
+    }
+}

+ 36 - 0
JBIM/StartVisionSelector/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("StartVisionSelector")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("StartVisionSelector")]
+[assembly: AssemblyCopyright("Copyright ©  2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("483cb146-0c1d-4865-ad34-fb0bbffde4d0")]
+
+// 程序集的版本信息由下列四个值组成: 
+//
+//      主版本
+//      次版本
+//      生成号
+//      修订号
+//
+// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 31 - 0
JBIM/StartVisionSelector/SelectorConst.cs

@@ -0,0 +1,31 @@
+/* ==============================================================================
+ * 功能描述:SelectorConst  
+ * 创 建 者:Garrett
+ * 创建日期:2019/8/1 8:57:34
+ * ==============================================================================*/
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StartVisionSelector
+{
+    /// <summary>
+    /// SelectorConst
+    /// </summary>
+    class SelectorConst
+    {
+        //Revit文件版本信息存储的位置
+        public const string RevitFileVisionFile = "RevitFileVision.txt";
+        /// <summary>
+        /// 程序集加载失败的dll
+        /// </summary>
+        public const string LoadingRevit = "LoadingRevitDll.txt";
+
+        /// <summary>
+        /// 用于获取Revit安装位置的dll
+        /// </summary>
+        public const string RevitAddInUtilityDll = "RevitAddInUtility.dll";
+    }
+}

+ 55 - 0
JBIM/StartVisionSelector/StartVisionSelector.csproj

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{483CB146-0C1D-4865-AD34-FB0BBFFDE4D0}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>StartVisionSelector</RootNamespace>
+    <AssemblyName>StartVisionSelector</AssemblyName>
+    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\OutputDll\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject />
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="SAGA.DotNetUtils, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Dlls\SAGA.DotNetUtils.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SelectorConst.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>

+ 6 - 0
JBIM/StartVisionSelector/StartVisionSelector.csproj.user

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectView>ShowAllFiles</ProjectView>
+  </PropertyGroup>
+</Project>