我将一个项目升级到 vs22/.net6,看起来 vs22 正在尝试将我的构建后事件作为单个命令执行。 每一行都是一个单独的 xcopy cmd。 这里有什么问题吗? 我尝试在单独的批处理文件中执行,结果相同。
在图像中,您可以看到构建后事件设置/输出。
这个文档xcopy说
错误代码4:发生初始化错误。内存或磁盘空间不足,或者您在命令行中输入了无效的驱动器名称或无效语法。
命令行上似乎存在一些无效语法。我复制了你的脚本并在 VS2022(17.11.5) 中运行它,效果很好。
xcopy /Y $(TargetDir)*.dllp $(TargetDir)dist\bin\
xcopy /Y $(TargetDir)*.exe $(TargetDir)dist\bin\
xxx xxx
与您的屏幕截图相比,您的
$(TargetDir)
似乎返回一个空字符串。它没有被正确的路径替换。
以下是解决问题的建议:
dotnet --info
将
$(TargetDir)
替换为绝对完整路径。(例如:C:\Users\source
epos\项目在\调试
et8.0)
添加一个目标来打印$(TargetDir),看看宏是否可以很好地解析。
<Target Name="tet">
<Message Text="TargetDir: $(TargetDir)" Importance="high" />
</Target>
更新VS2022到最新版本。(17.11.5可用)
创建一个面向 .NET6 的新项目并运行脚本以查看是否有效。