3

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

下面是我的 .csProj 代码。我试图从小处着手,只处理 Revit 2018 的 .net 框架 4.5.2。您还可以在底部找到我的项目属性的片段。不再有一个开放的,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>

项目属性片段 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

2 回答 2

1

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

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

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

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

    C:\Program Files\Autodesk\your_version_of_revit

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

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

于 2020-10-07T09:52:27.430 回答
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>
于 2020-09-22T14:47:53.657 回答