首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Microsoft.Build.Utilities.FileTracker引发异常错误。在不同的项目中发生

Microsoft.Build.Utilities.FileTracker引发异常错误。在不同的项目中发生
EN

Stack Overflow用户
提问于 2010-07-11 10:05:05
回答 4查看 6.3K关注 0票数 10

最近在Win7 64位版本的Visual Studio2010旗舰版C#中,当我编译任何项目时,我得到了下面的错误。解决方法是将<TrackFileAccess>false</TrackFileAccess>添加到项目文件中。如果我没弄错的话,这会禁用增量构建,所以我想远离这个变通方法。

有人知道永久可靠的修复方法是什么吗?我确实重装了.NET Framework4和VS2010。我没有测试版或之前版本的4.0框架文件夹。

代码语言:javascript
运行
复制
Error   1   The "GenerateResource" task failed unexpectedly.
System.TypeInitializationException: The type initializer for 'Microsoft.Build.Utilities.FileTracker' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Build.Utilities.FileTracker..cctor()
   --- End of inner exception stack trace ---
   at Microsoft.Build.Utilities.FileTracker.ForceOutOfProcTracking(ExecutableType toolType, String dllName, String cancelEventName)
   at Microsoft.Build.Tasks.GenerateResource.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-28 20:16:11

我通过反射Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Utilities.v4.0.dll找到了适合我的环境的解决方案

我的TEMP/TMP环境变量指向一个ram驱动器根文件夹(T:),没有任何进一步的目录嵌套!Path.GetDirectoryName(Path.GetTempPath());的静态ctor中的行s_tempPath = Microsoft.Build.Utilities.FileTracker导致了null,这导致了您提到的异常。

现在,我的TEMP/TMP环境变量指向T:\TEMP,一切工作正常。

票数 24
EN

Stack Overflow用户

发布于 2013-07-29 22:24:53

这是一个老问题,但我希望它能帮助那些在谷歌上搜索它的人。它不完全是原始问题中的Nullref,它是由Microsoft跟踪的bug引起的,但我想与您分享它。

我在构建C++项目时遇到了严重的问题,我发现这是由Temp环境变量(可能在路径名中包含空格)引起的。

代码语言:javascript
运行
复制
Unerwarteter Fehler bei der CL-Aufgabe.
System.TypeInitializationException: Der Typeninitialisierer für "Microsoft.Build.Utilities.FileTracker" hat eine Ausnahme verursacht. ---> System.IO.FileNotFoundException: Das System kann die angegebene Datei nicht finden. (Ausnahme von HRESULT: 0x80070002)
   bei System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   bei System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
   bei Microsoft.Build.Shared.NativeMethodsShared.ThrowExceptionForErrorCode(Int32 errorCode)
   bei Microsoft.Build.Shared.NativeMethodsShared.GetLongFilePath(String path)
   bei Microsoft.Build.Utilities.FileTracker..cctor()
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei Microsoft.Build.CPPTasks.CL.ComputeOutOfDateSources()
   bei Microsoft.Build.CPPTasks.TrackedVCToolTask.SkipTaskExecution()
   bei Microsoft.Build.Utilities.ToolTask.Execute()
   bei Microsoft.Build.CPPTasks.TrackedVCToolTask.Execute()
   bei Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   bei Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext()

将TEMP和TMP更改为:

代码语言:javascript
运行
复制
%USERPROFILE%\Appdata\Local\Temp

解决了它。

票数 3
EN

Stack Overflow用户

发布于 2011-06-10 13:29:17

这个问题有可能是由注册表清理引起的,比如CCleaner 3.x版本,在我执行它之后,VS2010 start抛出了这个文件陷阱问题,我非常确定这不是由其他操作引起的。

解决方案,我检查了文件是否存在于C:\Windows\Microsoft.NET\Framework\v4.0.30319,中文件黑客仍然存在,然后我检查我是否有多个4.0.xxx文件夹退出?答案是否定的。

所以我确认这不是VS的问题,它是由不正确的清理过程导致的注册表损坏。

下载完整版.net 4.0框架并重新安装,然后选择修复。重新启动电脑,现在你的VS应该可以正常工作了。

这里我要说的是,由于在发生此事件之前,您也不会对您的通用目标文件进行任何修改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3221565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档