【问题标题】:c# - Revit api - multi version plugin .csproj filec# - Revit api - 多版本插件 .csproj 文件
【发布时间】:2021-01-08 00:41:03
【问题描述】:

我正在尝试为 Revit 创建一个简单的多版本 hello World 插件,并且我找到了 this article,我正在尝试跟进。但是,我并没有走得太远。我不太熟悉 .csproj 文件的工作原理。我之前为各个 Revit 年创建了插件,但没有创建多个版本。

下面是我的 .csProj 代码。我试图从小处着手,只处理 Revit 2018 的 .net framework 4.5.2。您还可以在我的项目属性的底部找到 sn-ps。 Start External Application: 不再开放,所以我不知道如何通过 Revit 调试它。

感谢任何和所有帮助/指导。

使用下面的当前 .csproj 代码,我收到此弹出错误:

.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>

项目属性 sn-ps

【问题讨论】:

  • @EhsanIran-Nejad,你在项目属性中有什么目标框架?正如您在链接中显示的那样,我从 标记下的 .csproj 中删除了 &lt;TargetFrameworkVersion&gt;v4.5.2&lt;/TargetFrameworkVersion&gt; 行,但项目属性现在默认为 .net framework 4.0
  • @EhsanIran-Nejad,搞定了!谢谢。
  • 如果你成功了,你能和我们分享一下解决方案吗?谢谢!
  • @EhsanIran-Nejad 或 JeremyTammik,how to debug a multi-version plugin 上的任何提示?

标签: c# revit-api revit pyrevit


【解决方案1】:

感谢 Ehsan 分享他的 Github 链接。我能弄明白。

我用程序集名称将这两行添加到我的属性组中。

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

然后将它们添加到下面的单独属性组中,这似乎允许我在不同版本中运行它们。到目前为止,我只测试了 2018 年和 2019 年,但看起来很有希望。

<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>

【讨论】:

  • 正如您可能在之前 cmets 的示例 csproj 文件中看到的那样,您可以在 csproj 的其余部分上使用 RevitVersion 值来拥有动态构建路径,...自动设置当构建配置文件更改时
【解决方案2】:

感谢你的帖子,我学到了一些关于多版本插件的知识。现在,对于直接问题,您可以通过在启动调试过程时启动 Revit 来调试您的类库。设置如下:

  1. 将您的项目设置为启动项目(右键单击“解决方案探索”面板上的项目 => 设置为启动项目),以便在调试时成为第一个运行的项目

  2. 打开“项目属性”选项卡,选择“调试”

  3. 从 Debug 的“Start action”中选择“Start external program”。然后单击“浏览”按钮为 Revit 选择可执行文件。默认情况下,它应该在:

    C:\Program Files\Autodesk\your_version_of_revit

  4. 保存过程,构建项目并按 F5(或您为调试设置的任何键)

这有点晚了,因为你已经解决了你的问题,但希望它可以在类似的情况下有所帮助。

【讨论】:

    猜你喜欢
    • 2013-01-07
    • 2020-07-27
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2021-03-03
    相关资源
    最近更新 更多