Ich habe vier Projekte in meiner Visual Studio-Lösung (alle, die auf .NET 3.5 abzielen) - für mein Problem sind nur diese beiden wichtig:
- MyBaseProject <- Diese Klassenbibliothek verweist auf eine DLL-Datei eines Drittanbieters (elmah.dll).
- MyWebProject1 <- Dieses Webanwendungsprojekt enthält einen Verweis auf MyBaseProject
Ich habe den Verweis elmah.dll zu MyBaseProject in Visual Studio 2008 hinzugefügt, indem ich auf "Verweis hinzufügen ..." → Registerkarte "Durchsuchen" → → "elmah.dll" ausgewählt habe.
Die Eigenschaften der Elmah-Referenz sind wie folgt:
- Aliase - global
- Lokal kopieren - wahr
- Kultur -
- Beschreibung - Fehlerprotokollierungsmodule und -handler (ELMAH) für ASP.NET
- Dateityp - Baugruppe
- Pfad - D: \ webs \ otherfolder \ _myPath \ __ tools \ elmah \ Elmah.dll
- Gelöst - Richtig
- Laufzeitversion - v2.0.50727
- Angegebene Version - falsch
- Starker Name - falsch
- Version - 1.0.11211.0
In MyWebProject1 habe ich den Verweis auf Project MyBaseProject hinzugefügt, indem ich: "Verweis hinzufügen ..." → Registerkarte "Projekte" → "MyBaseProject" ausgewählt habe. Die Eigenschaften dieser Referenz sind bis auf die folgenden Elemente identisch:
- Beschreibung -
- Pfad - D: \ webs \ CMS \ MyBaseProject \ bin \ Debug \ MyBaseProject.dll
- Version - 1.0.0.0
Wenn ich den Build in Visual Studio ausführe, wird die Datei elmah.dll zusammen mit MyBaseProject.dll in das bin- Verzeichnis von MyWebProject1 kopiert!
Wenn ich jedoch MSBuild für die Lösung bereinige und ausführe (über D: \ webs \ CMS> C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe / t: ReBuild / p: Configuration = Debug MyProject.sln ) Die Datei elmah.dll fehlt im bin-Verzeichnis von MyWebProject1 - obwohl der Build selbst keine Warnungen oder Fehler enthält!
Ich habe bereits sichergestellt, dass die .csproj von MyBaseProject das private Element mit dem Wert "true" enthält (dies sollte ein Alias für " copy local " in Visual Studio sein):
<Reference Include="Elmah, Version=1.0.11211.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\mypath\__tools\elmah\Elmah.dll</HintPath>
**<Private>true</Private>**
</Reference>
(Das private Tag wurde standardmäßig nicht in der XML-Datei von .csproj angezeigt, obwohl Visual Studio "copy local" true sagte. Ich habe "copy local" auf "false" gesetzt - gespeichert - und es wieder auf "true" gesetzt - save!)
Was ist los mit MSBuild? Wie kann ich die Referenz (elmah.dll) in den Bin von MyWebProject1 kopieren lassen?
Ich möchte dem Postbuild-Befehl jedes Projekts KEINE Postbuild-Kopieraktion hinzufügen! (Stellen Sie sich vor, ich hätte viele Projekte, die von MyBaseProject abhängen!)