Unityが生成する.csprojファイル名の変更の問題

3453 ワード

Unityによって生成されたc#プロジェクト名のデフォルトはAssembly-CSharp.csprojAssembly-CSharp-firstpass.csprojです.しかし、最近では一部の種目の名前が{projectname}.csproj{projectname}.Plugins.csprojになった.
テストにより、Visual Studio Tools for Unity(VSTU)はcsprojファイル名{projectname}を自動的に変更します.ドキュメントを参照しても、ChangeLogには対応する記録説明とBug修正があります.csprojのファイル名が同じであることを保証するためには、すべてのマシンにVSTUをインストールする必要があります.VS 2015以前のバージョンでは、拡張と更新でインストールできます.VS 2017以降のバージョンは、Visual Studio Installerでインストールする必要があります.
また、文書を調べたところ、VSTUには少量のプログラマブルメソッドが含まれているという説明がありました.
  • Customize Project Files Created by VSTU VSTU修正VSTU生成csprojファイル
    using System;  
    using System.IO;  
    using System.Linq;  
    using System.Text;  
    using System.Xml.Linq;  
    
    using UnityEngine;  
    using UnityEditor;  
    
    using SyntaxTree.VisualStudio.Unity.Bridge;  
    
    [InitializeOnLoad]  
    public class ProjectFileHook  
    {  
        // necessary for XLinq to save the xml project file in utf8  
        class Utf8StringWriter : StringWriter  
        {  
            public override Encoding Encoding  
            {  
                get { return Encoding.UTF8; }  
            }  
        }  
    
        static ProjectFileHook()  
        {  
            ProjectFilesGenerator.ProjectFileGeneration += (string name, string content) =>  
            {  
                // parse the document and make some changes  
                var document = XDocument.Parse(content);  
                document.Root.Add(new XComment("FIX ME"));  
    
                // save the changes using the Utf8StringWriter  
                var str = new Utf8StringWriter();  
                document.Save(str);  
    
                return str.ToString();  
            };  
        }  
    }  
  • Share the Unity Log Callback with VSTU共有Visual Studioの出力はUnity
    using System;  
    
    using UnityEngine;  
    using UnityEditor;  
    
    using SyntaxTree.VisualStudio.Unity.Bridge;  
    
    [InitializeOnLoad]  
    public class LogCallbackHook  
    {  
        static LogCallbackHook()  
        {  
            VisualStudioIntegration.LogCallback += (string condition, string trace, LogType type) =>  
            {  
                // place code that implements your log callback here  
            };  
        }  
    }