gpt4 book ai didi

.net - 为什么 PowerShell 无法构建我的 .net 解决方案? ("file is being used by another process")

转载 作者:行者123 更新时间:2023-12-04 16:41:36 25 4
gpt4 key购买 nike

我编写了一个 PowerShell 脚本来一个接一个地构建多个 .net 解决方案。它只是简单地多次调用 tfget(以获取最新信息),然后调用 devenv.exe(以构建 .sln 文件)。

这是代码:

tfget -item $SolutionPath -overwrite -recurse -ev +errors
...
$out = invoke-expression "devenv.com /rebuild debug $SolutionPath"

几乎每次我运行脚本时,都会有一个解决方案无法构建,并且我从 CSC.exe (?) 收到一条错误消息:

error CS1606: Assembly signing failed; output may not be signed -- The process cannot access the file because it is being used by another process.



即使我已经关闭了包含这些解决方案的所有 Visual Studio 实例,并且我的机器上没有运行它们的任何 exe,也会发生这种情况。

我写的一个类似的批处理文件工作得很好。只有 PowerShell 会提示另一个进程正在使用该文件。

我怎样才能避免发生这种情况?有没有更好的例子来通过 PowerShell 构建 .net 解决方案?

最佳答案

不要使用调用表达式。只需直接在 SLN 文件上调用 devenv.exe(或者就此而言,只需使用 MSBuild.exe,除非您有安装程序或其他不受支持的项目类型)。使用 shell 脚本语言的优点之一是它们被设计为可以无缝地与控制台 exe 一起使用。我们一直在 PowerShell 脚本中这样做:

msbuild.exe "R:\Source\Foo.sln" /t:build /p:Configuration=Debug `
/v:detailed 2>&1 | Out-String -stream -width 1024 > $DebugBuildLogFile

我们通过 Out-String 运行输出,以便日志文件输出不会以 80 或 120 个字符(运行脚本的控制台的默认宽度)换行。

关于.net - 为什么 PowerShell 无法构建我的 .net 解决方案? ("file is being used by another process"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com