Ich habe eine Windows Applikation, bei der ich eine interne Version und eine externe Version erstelle. Praktisch wird bei der internen Version keine Lizenz überprüft. Im Visual Studio habe ich dafür zwei Konfigurationen erstellt. Eine definiert NO_LIC_CHECK, die andere halt nicht. Somit kann ich im Code darauf reagieren.
Nun hätte ich gerne auch zwei unterschiedlichen Exe-Dateien. Also einmal app.exe und einmal appIntern.exe.
Unglücklicherweise lässt die Projekt Datei keine Condition für den Assembly Namen zu, wie z.B.
<PropertyGroup Condition="'$(Configuration)'=='Intern'">
<AssemblyName>appIntern</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Extern'">
<AssemblyName>app</AssemblyName>
</PropertyGroup>
Ich bekomme ja wohl unterschiedliche Verzeichenisse unter bin. Aber es steht halt der gleiche Name drin.
Nun habe ich mit zwei Veröffentlichungsprofile erstellt. Damit kann ich schon mal die interne und externe Konfiguration separat veröffentlichen. Damit kann ich auch zwei Zielverzeichnisse angeben. Somit bekomme ich schon unterschiedliche exe. Aber es ist halt eine Datei mit dem gleichen Namen in zwei Verzeichnissen.
Kann man das doch hinbekommen, dass ich unterschiedliche Dateinamen bekomme?
Dies sollte mit einem Post-Build gelingen:
if "$(Configuration)" == "Intern" rename "$(TargetPath)" "appIntern.exe"
Ansonsten schau mal bzgl. "Publish" in die Antworten von How to change the output name of an executable built by Visual Studio (Stichwort: "<Target ... />").
dotnet publish -p:AssemblyName=appIntern […]
Hat die Blume einen Knick, war der Schmetterling zu dick.
War in Urlaub und habe deswegen nicht geantwortet.
<Target Name="RenameOutputExecutable" AfterTargets="Publish" Condition="'$(Configuration)'=='InternRel'">
<Move SourceFiles="$(PublishDir)$(AssemblyName).exe" DestinationFiles="$(PublishDir)$(AssemblyName)Intern.exe"/>
</Target>
in die Projektdatei einbauen funktioniert super.
Vielen Dank.