如何在我的构建后事件中修复MSB3073错误?

Sea*_*gan 25 msbuild post-build-event visual-studio-2012

我正在开发一个项目,要求通过构建我的解决方案生成的DLL从bin文件夹复制到另一个文件夹,这两个文件夹都在我的机器上,在我的C盘中.我编写了一个使用xcopy来完成此任务的批处理文件,您可以在此处看到:

xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.dll" "C:\inetpub\wwwroot\AppServer\bin\"
xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.pdb" "C:\inetpub\wwwroot\AppServer\bin\"
Run Code Online (Sandbox Code Playgroud)

现在,我尝试了这个文件的多次迭代,它位于:

C:\Users\scogan\Desktop\CopyFiles.bat
Run Code Online (Sandbox Code Playgroud)

所以我的post-build事件命令行如下所示:

call C:\Users\scogan\Desktop\CopyFiles.bat
Run Code Online (Sandbox Code Playgroud)

我自己运行这个批处理文件,桌面上的文件夹中有两个文本文件,它运行正常.我也运行它,因为我需要自己复制的文件,这也很好.但是,当我尝试将其作为后期构建事件运行时,我得到此输出:

1>  Organizr -> C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Client\bin\Debug\Organizr.exe
1>  File not found - Organizr.Services.dll
1>  0 File(s) copied
1>  0 File(s) copied
1>  File not found - Organizr.Services.pdb
1>c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(4291,5): error MSB3073: The command "call C:\Users\scogan\Desktop\CopyFiles.bat" exited with code 4.
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,发现错误代码4意味着"发生了初始化错误.没有足够的内存或磁盘空间,或者您在命令行上输入了无效的驱动器名称或无效的语法."

我也查了一下MSB3073是什么,并没有真正找到可以帮助我的东西.所以,我的问题是我做错了什么?绝对路径是否会搞砸?任何帮助在这里表示赞赏.

Sea*_*gan 23

使用不同的项目属性,我发现项目构建顺序是问题.生成我想要复制的文件的项目是第二个,但是首先构建了作为构建后事件运行批处理文件的项目,所以我只是将构建事件附加到第二个项目,它只是工作精细.不过,感谢大家的帮助.


Nic*_*eus 17

首选AfterBuild目标中的MsBuild"复制"任务而不是构建后事件.

将此Target附加到项目文件中并删除PostBuildEvent.

<Target Name="AfterBuild">
    <Copy SourceFiles="C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.*" 
          DestinationFolder="C:\inetpub\wwwroot\AppServer\bin\" 
          OverwriteReadOnlyFiles="true" 
          SkipUnchangedFiles="false" />
</Target>
Run Code Online (Sandbox Code Playgroud)


dar*_*rda 9

对于它的价值,我的问题是由于在copy命令中使用'/'作为目录分隔符引起的.必须使用反斜杠.


Pan*_*mal 6

指定的错误与构建后事件相关。不知何故,VS 工具无法将文件复制到目标文件夹。其原因可能有很多。要检查确切的错误原因,请转到“工具”>“选项”>“项目和解决方案”>“构建并运行” ,并将“ MsBuild 项目构建输出详细程度”更改为“诊断”。它将为您提供足够的信息来检测实际问题。

  • 不必要。我刚刚运行了一个将日志记录设置为“诊断”的构建,并且这些消息没有提供任何可操作的线索。 (2认同)

小智 5

就我而言,我通过构建项目创建的dll仍在后台使用。我终止了该应用程序,然后xcopy正常运行。