I tracked down a bug related to Macro expansion of
VS.Net variables within NANT. The symptom I was
seeing was that macros like $(TargetName) and other
target related macros were empty (null). Obviously, this
broke various asspects of the build.
I eventually was able to debug the problem by stepping
through the NANT source in a debugger. It appears that
this can occur if the OutputFile attribute in a config of a
vcproj file doesn't exist. This attribute exists in the
<tool Name="VCLinkerTool"> part of a project config.
I'm not sure how this can occur. (It happened in "new"
configs - i.e. not Debug or Release, so perhaps it is not
added by default?) In any case, VS.Net certainly
doesn't have a problem with the missing attribute...
Once I knew what was going on the fix was to change
the value in the project config, apply the change, and
then change it back. This ensures it is specified in the
However, Nant would be more robust if it accounted for
that and if the OutputFile attribute did not exist to set it
to the default VS.Net would use, which is:
This can be reproduced by taking any solution with
a .vcproj project and removing the attribute OutputFile
within the project file.
Also, it appears the fix would be to adjust the
GetToolSetting call in the OutputPath property getter of
VcConfigurationBase.cs to use a default value.
Log in to post a comment.