最近在Win7 64位版本的Visual Studio2010旗舰版C#中,当我编译任何项目时,我得到了下面的错误。解决方法是将<TrackFileAccess>false</TrackFileAccess>添加到项目文件中。如果我没弄错的话,这会禁用增量构建,所以我想远离这个变通方法。
有人知道永久可靠的修复方法是什么吗?我确实重装了.NET Framework4和VS2010。我没有测试版或之前版本的4.0框架文件夹。
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 发布于 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,一切工作正常。
发布于 2013-07-29 22:24:53
这是一个老问题,但我希望它能帮助那些在谷歌上搜索它的人。它不完全是原始问题中的Nullref,它是由Microsoft跟踪的bug引起的,但我想与您分享它。
我在构建C++项目时遇到了严重的问题,我发现这是由Temp环境变量(可能在路径名中包含空格)引起的。
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更改为:
%USERPROFILE%\Appdata\Local\Temp解决了它。
发布于 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应该可以正常工作了。
这里我要说的是,由于在发生此事件之前,您也不会对您的通用目标文件进行任何修改。
https://stackoverflow.com/questions/3221565
复制相似问题