修改 Unity 工程的 .net 版本一方面可以通过 VS 界面来修改的,另一方面也可以通过不开 VS 的方式来快速修改,这里以修改版本为 4.9.1 为例:
1:在 cmd 或 powershell 或 bash,git bash 都可以运行:
sed -i 's/\(TargetFrameworkVersion>\).*\(<\/TargetFrameworkVersion\)/\1v4.9.1\2/g' ./*.csproj
2:需要安装 Nodejs,也可以快速实现 IO 操作:
node -e "fs.readdirSync('./').forEach(fn => fs.writeFileSync(fn,fs.readFileSync(fn).toString().replace(/(?<=TargetFrameworkVersion\>)[^<\r\n]+/ig,'4.9.1')));"
3:在 Unity 工程内添加下列脚本,将自动运行:
using System.IO;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEngine;
public class VisualStudioProjectGenerationPostProcess : AssetPostprocessor
{
private static void OnGeneratedCSProjectFiles()
{
var dir = Directory.GetCurrentDirectory();
var files = Directory.GetFiles(dir, "*.csproj");
foreach (var file in files)
{
ChangeVersionOf(file);
}
}
static void ChangeVersionOf(string file)
{
var text = File.ReadAllText(file);
var find = @"TargetFrameworkVersion>[^<]+</TargetFrameworkVersion";
var replace = "TargetFrameworkVersion>v4.9.1</TargetFrameworkVersion";
if (Regex.Match(text,find,RegexOptions.IgnoreCase).Success)
{
text = Regex.Replace(text, find, replace);
File.WriteAllText(file, text);
}
}
}