2017-07-28 3 views
0

Ich erstelle eine VSIX-Erweiterung für Visual Studio, die ein benutzerdefiniertes Dropdown-Menü hinzufügt. Ich brauche den Wert aus diesem Menü, um ihn auf die Eigenschaft .csproj der Datei anzuwenden, ohne die Datei selbst zu ändern, wie das Konfigurationsmenü. Beispiel:Wie kann ich eine benutzerdefinierte MsBuild-Eigenschaft von VSIX festlegen, ohne in die .csproj-Datei zu schreiben?

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> 
    <DefineConstants>DEBUG;TRACE;</DefineConstants> 
</PropertyGroup> 

- Standardinhalt von .csproj. Wenn ich "Debug" aus dem Dropdown-Menü der Visual Studio-Konfiguration auswähle, wechselt der Wert der Konfigurationseigenschaft zu Debug, ohne die Datei .csproj zu ändern, und der Block "#if DEBUG" in der Codedatei wird aktiviert.

Ich habe mehrere Projekte in Lösung und jedes Projekt hat diese Eigenschaft. Wenn ich .csproj überschreibe, werden diese Änderungen von der Quellcodeverwaltung überwacht, was ich nicht will. Hilfe bitte.

Antwort

1

Wie kann ich benutzerdefinierte MsBuild-Eigenschaft festlegen, ohne in .csproj-Datei zu schreiben?

Wenn die benutzerdefinierte MSBuild Eigenschaft ein Property in der Projektdatei ist, können Sie MSBuild aufrufen, indem MSBuild-Befehlszeile einen Parameter in der Projektdatei zu übergeben:

<PropertyGroup> 
    <CustomTestName>TestValue1</CustomTestName> 
</PropertyGroup> 

Die Befehlszeile:

msbuild /p:CustaomTestName=TestValue2 

Alternativ können Sie die Option "condition" in der benutzerdefinierten Eigenschaft verwenden, wie [Debug/Release] in Projektdatei:

<PropertyGroup> 
    <CustomTestName>TestValue</CustomTestName> 
</PropertyGroup> 

<Target Name="CheckPropertiesHaveBeenSet"> 
    <Error Condition="'$(CustomTestName)'=='CustomTestNameNotSet'" Text="Something has gone wrong.. Custom Test Name not entered"/> 
    <PropertyGroup> 
    <CustomTestName Condition="'$(CustomTestName)'=='ChangeTestValue'">ChangeTestValue</CustomTestName > 
    </PropertyGroup> 
</Target> 
Verwandte Themen