建立standard类型的类库

  1. 新建项目,选择**standard内库

注意:不能是.NET Framework,小博说这个不行,我没试过
image.png

  1. 项目创建完成是这样子的,双击当前项目

image.png

  1. 修改标记区域
    • 修改前:首先F6,生成一次解决方案

image.png

  • 然后将netstandard2.0中的netstandard2.0修改为所需且能识别的.NET

    1. **注意:** <br /> TargetFrameworks 后面是有 s的。 <br /> 然后.NET的标识符尽量全部大写。需要什么版本就写什么版本。
  • 代码

    1. <PropertyGroup>
    2. <TargetFrameworks>NET35;NET40</TargetFrameworks>
    3. </PropertyGroup>

    image.png

  • 按F6生成解决方案,此时会提示,选择全部重载

image.png

  • 重载完毕后,右侧依赖项会多两个刚添加的类型

image.png

  • 添加更多版本,直接在后面添加;netXXXX

image.png

Nuget方式添加AutoCAD[或者其它CAD]的

  1. 添加**Nuget**管理包

image.png

  1. 输入对应的包,选择安装

image.png

  1. 后期调整

安装后可能会出现CAD内库版本与.NET版本不对应,那么需要手动调整左侧解决方案内的代码,使其对应,调整完毕后F6一次,无错误即可。
image.png

  1. 调整多项目

由于cad的每个版本依赖的api和net版本都不一致,因此为了区分版本,需要在每个net版本下分别引用cad的dll,这就需要分别设置。在项目文件里插入如下的片段:

  1. <ItemGroup Condition="'$(TargetFramework)' == 'NET45'">
  2. <PackageReference
  3. Include="AutoCAD.NET" Version="[20.0.0,21.0.0)"</PackageReference>
  4. </ItemGroup>

每个net版本都需要插入一个ItemGroup。
Include=”AutoCAD.NET” 这句就是引用nuget里桌子提供的包名
Version=”[20.0.0,21.0.0)” 这句的意思就是包的版本最低为20.0,最高不超过21.0,目的就是为不同的版本限定包的版本。
一般情况下没有括号,默认就是数字版本号,使用默认就好了。
有时在nuget安装包之后,在项目文件里有可能会出现如下的内容:

  1. <ItemGroup Condition="'$(TargetFramework)' == 'NET46'">
  2. <PackageReference Include="AutoCAD.NET" Version="[21.0.0,22.0.0)">
  3. <PrivateAssets>all</PrivateAssets>
  4. <IncludeAssets>runtime; build;native;contentfiles; analyzers; buildtransitive</IncludeAssets>
  5. </PackageReference>
  6. </ItemGroup>

内容主要是为了表明控制包依赖的资产,
注释掉就可以了。不然有可能会编译不通过。
Version=”[21.0.0,22.0.0)”中[……….)的用法:
image.png

多条件编译

  1. **设置条件编译符号**

默认的条件编译符号为NET46这些,所以如果想要定义一些
别名方便区分cad的版本的话,可以按如下的方式进行:

  1. <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
  2. <DefineConstants>DEBUG</DefineConstants>
  3. </PropertyGroup>
  4. <PropertyGroup Condition="'$(TargetFramework)' == 'NET35'">
  5. <DefineConstants>$(Configuration);ac2010</DefineConstants>?
  6. </PropertyGroup>
  7. <PropertyGroup Condition="'$(TargetFramework)' == 'NET40'">
  8. <DefineConstants>$(Configuration);ac2013</DefineConstants>?
  9. </PropertyGroup>
  10. <PropertyGroup Condition="'$(TargetFramework)' == 'NET47'">
  11. <DefineConstants>$(Configuration);ac2020</DefineConstants>?
  12. </PropertyGroup>

上面的NET45和ac2015都可以作为条件编译符号,为了书写和查看方便,就acxxx好一点
image.png

  1. 在**vs里可以通过在编辑区左上角切换不同的net版本。切换版本之后,当前版本有效的代码会高亮,其他版本有效的代码会变灰。**
    • 版本一

image.png

  • 版本二

image.png

写代码

哪些版本哪些可用,系统会提示
image.png

特别鸣谢

以上内容感谢小博老师指导,感谢小山山实践
笔记作者:小轩轩,2019年9月22日17时**