无法使用msbuild构建工作流项目(Sharepoint 2010)

8
我使用teamcity通过64位MSBuild构建Sharepoint项目。除了我的工作流项目以外,其他所有项目都正常工作。在使用Framework 4.0时,我收到以下错误消息:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Workflow.Targets(121,5): error MSB4018: The "CompileWorkflowTask" task failed unexpectedly. [V:\Workflows\MyCustomer.WFs.TranslationWorkflow\MyCustomer.WFs.TranslationWorkflow\MyCustomer.WFs.TranslationWorkflow.csproj] c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Workflow.Targets(121,5): error MSB4018: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Windows\system32\config\systemprofile\AppData\Local\Temp\vjwduioy.tmp'. [V:\Workflows\MyCustomer.WFs.TranslationWorkflow\MyCustomer.WFs.TranslationWorkflow\MyCustomer.WFs.TranslationWorkflow.csproj]
我记得微软放弃了旧的Workflow机制,所以我预计它可能只适用于旧的3.5框架,并使用该框架构建项目,但是出现了另一个错误:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets(37,45): error MSB4019: The imported project "C:\Windows\Microsoft.NET\Framework64\v3.5\Workflow.Targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.
在Visual Studio 2010中,构建工作得非常好。
2个回答

6
发现了解决方案: 我必须在“C:\Windows\system32\config\systemprofile\AppData\Local\Temp\”中创建一个文件夹。 这似乎是完全的TeamCity问题。

2
创建哪个文件夹?用什么名称?里面放什么? - Shaggydog
抱歉,太久以前了,我记不起来了。(现在感觉有点像政治家 :)) - Ole Albers
1
我在使用TeamCity时遇到了同样的问题,更准确地描述,'Temp'文件夹必须存在于'C:\Windows\system32\config\systemprofile\AppData\Local'目录下。 - Gatis Bergšpics
说句实话,现在是2014年12月,我也遇到了与TeamCity 8.1.5(build 30240)完全相同的问题。然而,创建文件夹对我并没有解决问题。 - Tundey
3
对我有效的方法是将TeamCity Windows服务切换为使用我的凭据,而不是LocalSystem。 - Tundey
显示剩余2条评论

0

通过修改CMD环境解决了问题。

添加 C:\Windows\system32\config\systemprofile\AppData\Local\Temp\ 对我没有帮助。

而且 C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Temp‌ 也不行。
更有甚者,在 \SysWOW64 下添加 \Temp 文件夹后,因为 new weird bug VBCSCompiler.exe 导致 CSC:错误 CS2001:找不到源文件... 我被迫使用 MSBuild x64。

此外,我不能一直使用 MSBuild x64。
我无法通过 DevEnv.com 使用 MSBuild x64 来构建 Visual Studio 安装项目。DevEnv 只允许使用 x32 MSBuild。

幸运的是,我找到了一个有趣的方法来解决所有这些错误。
我通过覆盖 CMD 的环境变量(如 AppData 和其他变量)来更改 CMD 调用的配置文件夹。

这是完整且可用的版本 - MSBuild-File-System-Redirector-fail-System32-to-SysWOW64

很抱歉,但您无法在没有通过批处理文件调用MSBuild和DevEnv此答案中使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接