UnityEditor下调用命令行编译外部sln工程

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.等待执行结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用C#代码编译sln工程文件的示例: ```csharp using Microsoft.Build.Evaluation; using Microsoft.Build.Execution; namespace CompileSlnDemo { class Program { static void Main(string[] args) { // 设置sln文件路径 string slnPath = @"C:\MyProject\MyProject.sln"; // 读取sln文件 ProjectCollection pc = new ProjectCollection(); SolutionFile sf = SolutionFile.Parse(slnPath); // 编译sln文件中的所有项目 BuildParameters bp = new BuildParameters(pc); BuildManager bm = BuildManager.DefaultBuildManager; BuildRequestData buildRequest = new BuildRequestData(sf.ProjectsInOrder.ToArray(), new Dictionary<string, string>(), null, BuildRequestDataFlags.None); BuildResult buildResult = bm.Build(bp, buildRequest); // 检查编译是否成功 if (buildResult.OverallResult == BuildResultCode.Success) { Console.WriteLine("Build succeeded."); // 生成EXE文件 foreach (ProjectInstance pi in buildResult.ProjectStateResults.Select(r => r.Value)) { string outputPath = pi.GetPropertyValue("OutputPath"); string targetFileName = pi.GetPropertyValue("TargetFileName"); string exePath = Path.Combine(outputPath, targetFileName); if (File.Exists(exePath)) { Console.WriteLine("EXE file generated successfully: {0}", exePath); } } } else { Console.WriteLine("Build failed."); } } } } ``` 在上面的示例中,我们首先设置sln文件路径,然后使用Microsoft.Build.Evaluation库中的ProjectCollection和SolutionFile类读取sln文件。接下来,我们使用BuildManager类编译sln文件中的所有项目,并检查编译是否成功。最后,我们检查是否已生成EXE文件。 请注意,示例中假设您使用的是Visual Studio 2010及以上版本,并且在这里使用的是MSBuild来编译项目。如果您使用的是其他版本的Visual Studio,可能需要更改MSBuild路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值