c # - Revit api - Multi-Version-Plugin .csproj-Datei

Sep 22 2020

Ich versuche, ein einfaches hello WorldPlug-In für mehrere Versionen für Revit zu erstellen, und habe diesen Artikel gefunden, dem ich folgen möchte. Ich komme jedoch nicht sehr weit. Ich bin nicht so vertraut mit der Funktionsweise der .csproj-Datei. Ich habe bereits Plugins für einzelne Revit-Jahre erstellt, jedoch keine Multi-Versionen.

Hier ist mein .csProj-Code unten. Ich versuche, klein anzufangen und nur das .net Framework 4.5.2 (Revit 2018) zu verarbeiten. Unten finden Sie auch Ausschnitte für meine Projekteigenschaften. Es gibt kein offenes mehr für, Start External Application: daher weiß ich nicht, wie ich es über Revit debuggen soll.

Jede Hilfe / Anleitung wird geschätzt.

Mit dem aktuellen .csproj-Code unten erhalte ich den folgenden Popup-Fehler:

.csproj

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net452<!--;net46;net47--></TargetFrameworks>
        <Configurations>Debug;Release</Configurations>
        <!--<Platforms>x64</Platforms>-->
        <OutputPath>bin\Debug\</OutputPath>
    </PropertyGroup>

    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|Any CPU' ">      
        <DefineConstants>DEBUG</DefineConstants>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>

        <DebugType>full</DebugType>
        <DebugSymbols>true</DebugSymbols>
    </PropertyGroup>

    <PropertyGroup Condition="'$(Configuration)'=='Release'"> <PlatformTarget>x64</PlatformTarget> <DebugType>none</DebugType> <DebugSymbols>false</DebugSymbols> </PropertyGroup> <PropertyGroup Condition=" '$(TargetFramework)' == 'net452' ">
        <DefineConstants>$(DefineConstants);REVIT2018</DefineConstants> <!--<AssemblyName>helloWorld</AssemblyName>--> </PropertyGroup> <ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
        <!--<Reference Include="AdWindows">
            <HintPath>......\2018\AdWindows.dll</HintPath>
            <EmbedInteropTypes>false</EmbedInteropTypes>
            <Private>false</Private>
        </Reference>-->
        <Reference Include="RevitAPI">
            <HintPath>C:\Program Files\Autodesk\Revit 2018\RevitAPI.dll</HintPath>          
            <EmbedInteropTypes>false</EmbedInteropTypes>
            <Private>false</Private>
        </Reference>
        <Reference Include="RevitAPIUI">
            <HintPath>C:\Program Files\Autodesk\Revit 2018\RevitAPIUI.dll</HintPath>
            <EmbedInteropTypes>false</EmbedInteropTypes>
            <Private>false</Private>
        </Reference>
    </ItemGroup>

    <ItemGroup>
      <Reference Include="PresentationCore" />
      <Reference Include="System.Windows.Forms" />
    </ItemGroup>
</Project>

Projekteigenschaften-Snippets

Antworten

Cflux Sep 22 2020 at 21:47

Vielen Dank an Ehsan für das Teilen seines Github-Links. Ich konnte es herausfinden.

Ich habe diese beiden Zeilen mit dem Namen der Assembly zu meiner Eigenschaftsgruppe hinzugefügt.

<TargetFrameworkProfile />
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>

und fügte diese unten in separaten Eigenschaftsgruppen hinzu, die es mir zu ermöglichen scheinen, sie in verschiedenen Versionen auszuführen. Ich habe bisher nur 2018 und 2019 getestet, aber es sieht vielversprechend aus.

<PropertyGroup Condition="$(Configuration.Contains('2018'))"> <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> <RevitVersion>2018</RevitVersion> </PropertyGroup> <PropertyGroup Condition="$(Configuration.Contains('2019'))">
    <TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
    <RevitVersion>2019</RevitVersion>
  </PropertyGroup>
  <PropertyGroup Condition="$(Configuration.Contains('2020'))"> <TargetFrameworkVersion>v4.7</TargetFrameworkVersion> <RevitVersion>2020</RevitVersion> </PropertyGroup> <PropertyGroup Condition="$(Configuration.Contains('2021'))">
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
    <RevitVersion>2021</RevitVersion>
  </PropertyGroup>
ThếLong Oct 07 2020 at 16:52

Dank Ihres Beitrags habe ich etwas über das Multi-Version-Plug-In gelernt. Für die direkte Frage können Sie jetzt Ihre Klassenbibliothek debuggen, indem Sie Revit starten, wenn Sie den Debug-Prozess starten. Und die Einstellung ist wie folgt:

  1. Legen Sie Ihr Projekt als Startprojekt fest (klicken Sie mit der rechten Maustaste auf das Projekt im Fenster "Lösungserkundung" => Als Startprojekt festlegen), damit es das erste Projekt ist, das beim Debuggen ausgeführt wird

  2. Öffnen Sie die Registerkarte "Projekteigenschaften" und wählen Sie "Debuggen".

  3. Wählen Sie unter "Aktion starten" beim Debuggen "Externes Programm starten". Klicken Sie dann auf die Schaltfläche "Durchsuchen", um die ausführbare Datei für Revit auszuwählen. Standardmäßig sollte es sein bei:

    C: \ Programme \ Autodesk \ your_version_of_revit

  4. Speichern Sie den Prozess, erstellen Sie das Projekt und drücken Sie F5 (oder einen beliebigen Schlüssel, den Sie für das Debuggen festgelegt haben).

Dies ist etwas spät, da Sie Ihr Problem bereits gelöst haben, aber ich hoffe, dass es in einer ähnlichen Situation hilfreich sein kann.