UnityEditor下编译外部sln工程。
//先用File删除原来的DLL
//编译DLL------------------------------------------------
string strMSBuildPath = "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe";
string strSlnTarget = Application.dataPath + "/../../xxx.sln";
string[] arrStrParams = new string[] { "/t:Rebuild", "/p:Configuration=Release" };
string strParam = strSlnTarget + " ";
for (int i = 0; i < arrStrParams.Length; i++)
{
strParam += arrStrParams[i];
strParam += " ";
}
strParam = strParam.TrimEnd();
Process msbuild = Process.Start(strMSBuildPath, strParam);
msbuild.WaitForExit();
msbuild.Close();
逐行翻译:
1.因为试验了一些能查到的命令,发现 vs清理解决方案 这个功能,好像在命令行里不是那么好用。所以干脆就自己写了文件删除File.Delete,再编译,等于是清理解决方案之后再编译了。
命令虽然是rebuild,但是实际操纵过程中,有时候会出现文件占用导致编译失败的情况,所以删掉再编译,确保没问题。
2.strMSBuildPath找到电脑里的MSBuild路径,装了多个.net在上一级目录有多个版本,可以自己对应的路径找到MSBuild
3.找到自己工程的dll项目的sln文件,用来作为参数编译。
4.编译参数,官方有文档,用起来 就这两个参数就可以了
/t:Rebuild(编译) /p:Configuration=Release(发布版本)。
5.组装一下 整条命令行
6.网上找到的 new Process,然后用 对象Start的方法,试了下不好用,不知道为什么,直接静态调动没什么问题,所以就这么用了。
不知道是不是在unity里面使用才会有这个问题。
7.等待执行结束