Heute ist es mir wieder passiert: Zwei Dateien mit gleichen Namen im gleichen Projekt, aber in unterschiedlichen Ordnern und VS versagt kommentarlos ohne Warnung beim linken völlig. Die Fehlersuche hat für einen derartigen Fehler wieder viel zu viel Zeit in Anspruch genommen. Dann wollte ich VS am besten gleich so konfigurieren, dass das nie mehr passieren kann und die Objektdateien ja nach Unterpfad andere Namen bekommen. Ich habe es zwar sogar geschafft mit Property Functions einen MSBuild Ausdruck zu schreiben, der mir die Datei eindeutig benennt, jedoch funktioniert dieser nur dann, wenn man ihn direkt in die Properties der Datei einträgt. Gebe ich den Ausdruck allerdings für das gesamte Projekt oder in mein Projektübergreifendes Property Sheet ein, wird der Ausdruck scheinbar nur einmal zugewiesen und das "%(FullPath)" nicht richtig aufgelöst. Am Ende entsteht dann eine Objektdatei mit dem Namen "%(FullPath)" im Objektdateiverzeichnis, was nicht ganz der Sinn der Sache ist. Meine Frage ist jetzt: Wie bekomme ich den Objektdateinamen projektweit geändert geändert, so das der Ausdruck "%(FullPath)" richtig aufgelöst wird?
Der MSBuild-Ausdruck sieht im Moment im Property Sheet so aus:
Code: Alles auswählen
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
[...]
<ItemDefinitionGroup>
<ClCompile>
[...]
<ObjectFileName>$(IntDir)$([MSBuild]::MakeRelative($([System.IO.Path]::GetFullPath("$(ProjectDir)\..\..\..\Source\$(ProjectName)")), %(FullPath)).Replace("\","__").Replace("/","__")).obj</ObjectFileName>
</ClCompile>
[...]
</ItemDefinitionGroup>
</Project>