62,233
社区成员




[HttpPost]
public IActionResult Cunn([FromServices]IHostApplicationLifetime application)
{
//获取程序的工作目录路径,依赖注入 IWebHostEnvironment
var web = WebHost.ContentRootPath;
//// 改名方法-假设项目的dll 为 WebApplication1.dll
FileInfo fi = new FileInfo(Path.Combine(web, "WebApplication1.dll"));
//// 改为 a1234
fi.MoveTo(Path.Combine(web, "a1234.dll"));
//要复制的新文件路径-你的新dll 路径 可以是下载或者复制或移动
string pLocalFilePath = Path.Combine(WebHost.WebRootPath, "css", "WebApplication1.dll");
//将新文件复制过去基目录
string pSaveFilePath = Path.Combine(web, "WebApplication1.dll");
if (System.IO.File.Exists(pLocalFilePath))
{
System.IO.File.Copy(pLocalFilePath, pSaveFilePath, true);
//复制成功后, 杀死当前的进程=相当于重启了 依赖注入 IHostApplicationLifetime
application.StopApplication();
}
return Content("ok");
}
[/quote]
很牛B啊,测试有效,感谢!
不过有个小插曲 WebHost.ContentRootPath 没有 ContentRootPath这个方法,不知道为什么,我改用的是Directory.GetCurrentDirectory()。 我用的是core 3.1 ,难道这个方法取消了?
[HttpPost]
public IActionResult Cunn([FromServices]IHostApplicationLifetime application)
{
//获取程序的工作目录路径,依赖注入 IWebHostEnvironment
var web = WebHost.ContentRootPath;
//// 改名方法-假设项目的dll 为 WebApplication1.dll
FileInfo fi = new FileInfo(Path.Combine(web, "WebApplication1.dll"));
//// 改为 a1234
fi.MoveTo(Path.Combine(web, "a1234.dll"));
//要复制的新文件路径-你的新dll 路径 可以是下载或者复制或移动
string pLocalFilePath = Path.Combine(WebHost.WebRootPath, "css", "WebApplication1.dll");
//将新文件复制过去基目录
string pSaveFilePath = Path.Combine(web, "WebApplication1.dll");
if (System.IO.File.Exists(pLocalFilePath))
{
System.IO.File.Copy(pLocalFilePath, pSaveFilePath, true);
//复制成功后, 杀死当前的进程=相当于重启了 依赖注入 IHostApplicationLifetime
application.StopApplication();
}
return Content("ok");
}