Visual Studio一个项目有多个dll作为输出?

Ale*_*ksi 26 c# visual-studio

我正在编写一个支持插件的项目.由于许多插件相对较小(只有一个源文件/类),我希望将它们全部放在visual studio中的一个项目中,但为了成功完成这个,我需要将每个源文件/类编译到其中自己的dll文件,这可能使用visual studio吗?

如果使用visual studio无法做到这一点,是否可以使用其他构建系统,同时仍然使用visual studio进行编码和调试?

目前我已经将插件项目输出类型设置为console,并编写了一个main()方法,该方法将源目录中的所有.cs文件编译为dll并将其复制到正确的目录中.然后我将该控制台应用程序设置为插件项目的后期构建事件.它有效,但它似乎是一个非常丑陋的黑客.

使用visual studio 2010.

Jul*_*rau 37

您可以为每个插件创建一个项目,并将解决方案中的所有项目分组.

如果您不希望每个插件都有一个项目,则可以使用CSC任务使用MSBuild创建自定义构建

如何为每个插件文件生成一个dll

  1. 在项目中,您添加所有插件文件
  2. 编辑项目文件以指定将生成插件库的类:

    <ItemGroup>
      <Compile Include="Class1.cs">
        <Plugin>true</Plugin>
      </Compile>
      <Compile Include="Class2.cs" />
      <Compile Include="Class3.cs">
        <Plugin>true</Plugin>
      </Compile>
      <Compile Include="Program.cs" />
      <Compile Include="Properties\AssemblyInfo.cs" />
    </ItemGroup>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在项目文件中添加新目标以生成插件库

    <Target Name="BuildPlugins">
      <CSC Condition="%(Compile.Plugin) == 'true'"
           Sources="%(Compile.FullPath)"
           TargetType="library"
           OutputAssembly="$(OutputPath)%(Compile.FileName).dll"
           EmitDebugInformation="true" />
    </Target>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果要在每次构建后创建插件库,请添加after build目标:

    <Target Name="AfterBuild" DependsOnTargets="BuildPlugins">
    </Target>
    
    Run Code Online (Sandbox Code Playgroud)

  • 它只是结果中的多文件汇编吗?我可以将任何结果dll(没有清单)作为参考添加到另一个项目吗? (2认同)

Bru*_*oLM 11

您只需创建一个Solution然后添加所需数量的项目.

您可以拥有5 Class Library个项目并进行编译,生成5个DLL.

  • Project和AssemblyInfo文件浪费了几千字节?恭敬地,我们在这里谈论虚假经济.这就是*for*项目,将源代码封装到程序集中.:) (10认同)