gpt4 book ai didi

.net - MSBuild 错误 MSB3021 : Unable to copy file. 找不到文件 'obj\Release\myWebProject1.dll'

转载 作者:行者123 更新时间:2023-12-03 11:29:21 25 4
gpt4 key购买 nike

当使用 TeamCity 编译我的 MSBuild XML 任务脚本时,它失败了:

[10:43:03]: myWebProject1\ myWebProject 1 .csproj (3s)
[10:43:07]: [ myWebProject1\ myWebProject1 .csproj] _CopyWebApplicationLegacy
[10:43:07]: [_CopyWebApplicationLegacy] Copy
[10:43:07]: [Copy] C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets(131, 5): error MSB3021: Unable to copy file "obj\Release\myWebProject1.dll" to "C:\MSBUILDRELEASE\myWebProject1\\bin\myWebProject1.dll". Could not find file 'obj\Release\myWebProject1.dll'.

当我在本地运行它时,它可以工作。

当我将本地输出与构建服务器输出进行比较时,构建服务器上缺少文件。就像我的构建服务器输出目录中缺少 global.asax 文件一样(但在我本地编译时没有)。这是为什么?

这是我当前的 MSBuildScript:
<?xml version="1.0" encoding="utf-8"?>
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0"
DefaultTargets="Build">

<PropertyGroup>
<OutputDir>C:\MSBUILDRELEASE</OutputDir>
</PropertyGroup>

<ItemGroup>
<ProjectToBuild Include="UtilityApp.sln" >
<Properties>OutputPath=$(OutputDir);Configuration=MSBuildRelease;Platform=x86</Properties>
</ProjectToBuild>
</ItemGroup>

<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"/>
<CallTarget Targets="Publish WebProject1" />
<CallTarget Targets="Publish WebProject2" />
</Target>

<Target Name="Publish WebProject1">
<RemoveDir Directories="$(OutputFolder)"
ContinueOnError="true" />
<MSBuild Projects="WebProject1\WebProject1.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="WebProjectOutputDir=$(OutputDir)\WebProject1\;
OutDir=$(OutputDir)\WebProject1\;Configuration=Release;Platform=AnyCPU" />
</Target>

<Target Name="Publish WebProject2">
<RemoveDir Directories="$(OutputFolder)"
ContinueOnError="true" />
<MSBuild Projects="WebProject2\WebProject2.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="WebProjectOutputDir=$(OutputDir)\WebProject2\;
OutDir=$(OutputDir)\WebProject2\;Configuration=Release;Platform=AnyCPU" />
</Target>

</Project>

我可以在本地运行这个脚本,它似乎工作正常(没有产生错误)。当我在构建服务器上运行它时,它失败并显示 MSBuild 错误 MSB3021。

现在,当我将本地构建输出文件与服务器构建输出文件进行比较时,服务器输出没有那么多文件。例如,我的构建服务器上的输出中缺少 global.ASAX 文件。为什么它对我来说可以在本地运行,而不能在我的 TeamCity 构建服务器上运行?有什么区别,我该如何解决?

我注意到 TeamCity 构建代理错误消息有一个有趣的目录路径:
“C:\MSBUILDRELEASE\myWebProject1\bin\myWebProject1.dll”

^ bin 文件夹前有两个斜线。我没有在任何地方指定。是什么赋予了?我有一种感觉,我没有正确构建我的 Web 项目(也许使用不同的任务方法?)。它似乎在本地工作,但不在我的构建服务器上。

我是否正确构建了我的网络项目?这些只是用于 Web 服务 (ASMX) 部署的 Web 项目。帮助?

最佳答案

好吧,我想通了。这是“配置”不匹配。您有一个使用 Configuration=MSBuildRelease 构建的项目和另外两个使用 Configuration=Release 构建的项目。然后,MSBuild 会在错误的位置查找“中间”程序集。

将您的代码更改为:

<?xml version="1.0" encoding="utf-8"?>
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0"
DefaultTargets="Build">

<PropertyGroup>
<OutputDir>C:\MSBUILDRELEASE</OutputDir>
</PropertyGroup>

<ItemGroup>
<ProjectToBuild Include="UtilityApp.sln" >
<Properties>OutputPath=$(OutputDir);Configuration=MSBuildRelease;Platform=x86</Properties>
</ProjectToBuild>
</ItemGroup>

<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"/>
<CallTarget Targets="Publish WebProject1" />
<CallTarget Targets="Publish WebProject2" />
</Target>

<Target Name="Publish WebProject1">
<RemoveDir Directories="$(OutputFolder)"
ContinueOnError="true" />
<MSBuild Projects="WebProject1\WebProject1.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="WebProjectOutputDir=$(OutputDir)\WebProject1\;
OutDir=$(OutputDir)\WebProject1\;Configuration=MSBuildRelease;Platform=AnyCPU" />
</Target>

<Target Name="Publish WebProject2">
<RemoveDir Directories="$(OutputFolder)"
ContinueOnError="true" />
<MSBuild Projects="WebProject2\WebProject2.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="WebProjectOutputDir=$(OutputDir)\WebProject2\;
OutDir=$(OutputDir)\WebProject2\;Configuration=MSBuildRelease;Platform=AnyCPU" />
</Target>

</Project>

关于.net - MSBuild 错误 MSB3021 : Unable to copy file. 找不到文件 'obj\Release\myWebProject1.dll',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158313/

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