gpt4 book ai didi

c# - Visual Studio 一个项目有几个 dll 作为输出?

转载 作者:IT王子 更新时间:2023-10-29 04:18:30 26 4
gpt4 key购买 nike

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

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

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

使用 visual studio 2010。

最佳答案

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

如果您不想每个插件一个项目,您可以使用 CSC task 使用 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>
  3. 在您的项目文件中添加一个新目标以生成插件库

    <Target Name="BuildPlugins">
    <CSC Condition="%(Compile.Plugin) == 'true'"
    Sources="%(Compile.FullPath)"
    TargetType="library"
    OutputAssembly="$(OutputPath)%(Compile.FileName).dll"
    EmitDebugInformation="true" />
    </Target>
  4. 如果你想在每次构建后创建插件库,添加一个构建后目标:

    <Target Name="AfterBuild" DependsOnTargets="BuildPlugins">
    </Target>

关于c# - Visual Studio 一个项目有几个 dll 作为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3867113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com