小编Erl*_*sen的帖子

MSBuild和TeamBuild - 由于MSB3021文件权限违规导致BuildInParallel失败

我维护了一个相当大的软件的构建,包括大约350个csharp项目.调试内置时钟的构建时间约为17分钟.

我一直在寻找改善构建时间的方法,而BuildInParallel属性确实看起来很吸引人.特别是因为我们有一个四核服务器在做我们的构建,它应该真的能够利用计算能力.

但是唉...在设置属性,修改构建代理的配置文件并重新启动它之后,第一次运行确实看起来很有希望,比正常情况更快,直到它失败的程度.

在查看构建日志之后,当它尝试将标记为CopyLocal = true的引用复制到输出目录时,看起来构建失败.如果C#项目A和C#项目B并行构建,并且两者都引用相同的第三方dll,并尝试同时复制它,则尝试复制文件的第二个进程将获得文件访问冲突 - 该文件正被另一个进程使用.

有没有人经历过这个,并且能够在Team Build上获得多进程构建?


这是其中一个失败,有点难以弄清楚同时建造了哪个其他项目.

我删除了所有不相关的东西:

54>从项目"d:\ temp\PCM\1.3-Maint_CI\Sources\Modules\Core \"文件"c:\ WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets"中定位"_CopyFilesMarkedCopyLocal" Test\UnitTest\TestDIPS.Core.Data.Server.NUnit\TestDIPS.Core.Data.Server.NUnit.csproj":54>任务"复制"从"..........\Bin \"复制文件3rdParty\Oracle\Oracle.DataAccess.dll"到"d:\ temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll".命令:copy/y"..........\Bin\3rdParty\Oracle\Oracle.DataAccess.dll""d:\ temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll "54> c:\ WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(2703,9):错误MSB3021:无法复制文件"..........\Bin\3rdParty\Oracle\Oracle.DataAccess.dll"到"d:\ temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll".该进程无法访问文件'd:\ temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll',因为它正由另一个进程使用.完成执行任务"复制" - 失败.54>在项目"TestDIPS.Core.Data.Server.NUnit.csproj"中完成构建目标"_CopyFilesMarkedCopyLocal" - 失败.

msbuild team-build

27
推荐指数
3
解决办法
9624
查看次数

System.Net.WebClient奇怪地失败了

我试图从我们的TFS服务器上的报告服务实例下载一些数据.
鉴于代码应该在未加入域的计算机上运行,​​我想我会自己设置凭据.没有运气,得到了一个HTTP 401 Unauthorized返回.好的,所以我联系了Fiddler看看发生了什么.

但是当我得到Heisenberged时 - 这个电话现在顺利完成了.因此认证通过Fiddler连接,但没有它就失败了.Webclient是破碎的还是我错过了一些深刻的东西?

private void ThisWorksWhenDomainJoined()
    {
        WebClient wc = new WebClient();
        wc.Credentials = CredentialCache.DefaultNetworkCredentials;
        wc.DownloadString("http://teamfoundationserver/reports/........");  //Works
    }

    private void ThisDoesntWork()
    {
        WebClient wc = new WebClient();
        wc.Credentials = new NetworkCredential("username", "password", "domain");
        wc.DownloadString("http://teamfoundationserver/reports/........");  //blows up wih HTTP 401
    }
Run Code Online (Sandbox Code Playgroud)

c# system.net webclient

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

msbuild ×1

system.net ×1

team-build ×1

webclient ×1