The "ResolveNativeReference" task failed unexpectedly

  • Thread starter Thread starter Tony Wong
  • Start date Start date
T

Tony Wong

I have a C++ project (assembly) and a C# project (client that uses the C++
assembly). These projects used to work when compiled under VS 2003 but when
I upgraded my projects to VS 2005 I got the following error when I compile
the C# client,

----------------------------------------------------------------------------
--------------------------------------------
The "ResolveNativeReference" task failed unexpectedly.
System.ArgumentNullException: Parameter "metadataValue" cannot be null.
at Microsoft.Build.Shared.ErrorUtilities.VerifyThrowArgumentNull(Object
parameter, String parameterName)
at Microsoft.Build.Utilities.TaskItem.SetMetadata(String metadataName,
String metadataValue)
at
Microsoft.Build.Tasks.ResolveNativeReference.ExtractFromManifest(ITaskItem
taskItem, String path, Hashtable containingReferenceFilesTable, Hashtable
containedPrerequisiteAssembliesTable, Hashtable containedComComponentsTable,
Hashtable containedTypeLibrariesTable, Hashtable
containedLooseTlbFilesTable, Hashtable containedLooseEtcFilesTable)
at Microsoft.Build.Tasks.ResolveNativeReference.Execute()
at Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode
howToExecuteTask, Hashtable projectItemsAvailableToTask, BuildPropertyGroup
projectPropertiesAvailableToTask, Boolean& taskClassWasFound)
----------------------------------------------------------------------------
--------------------------------------------

I searched the MSDN forum and found another guy had the same problem
(http://forums.microsoft.com/msdn/ShowPost.aspx?postid=370426&isthread=false
&siteid=1&authhash=300d160e0f32a3abd006853e62466660da83fab9&ticks=6328166038
53148671
). Any one seen this and know how to fix it?

Thanks.
 
I have been able to repoduce your problem. It is very likely that your
problem is related to the CRT libraries. In VS2005, these are deployed as
native assemblies (in the %windir%\WinSxS directory). To be able to load the
CRT dlls, you need a native manifest. If you create a new C++/CLI class
library project, the project settings ensure that such a native manifest
will be embedded. If you port pojects from older versions, you will have to
update your porject settings for the manifest tool. Create a new C++/CLI
class lib project and update your old project settings for the manifest tool
according to the new project settings. Let me know if this does not solve
the problem.

Marcus Heege
 
The project settings doesn't seem to make a difference. I looked into this
matter further and am now thinking the issue may be related to how the
VC2005 upgrader handles resource files. I will post more information if I
know more.
 
Tony Wong said:
The project settings doesn't seem to make a difference. I looked into
this
matter further and am now thinking the issue may be related to how the
VC2005 upgrader handles resource files. I will post more information if I
know more.

I have also made the experience that the pure existence of an external
native manifest file for a dependant dll (xxx.dll.manifest) in the output
directory can cause this problem.

Just in case...

Marcus
 
Back
Top