0

我创建了一个项目,其中包含两个文件夹。“src”文件夹包含核心元素,“plugin”文件夹包含不同的插件(每个插件=一个文件)。

这里有一个例子:

MyProject
|_src
    |_attributeclass.cs
    |_basepluginparent.cs
    |_otherneededclass.cs
|_plugins
    |_plugin1extendsfrombaseclass.cs
    |_plugin2extendsfrombaseclass.cs
    |_plugin3extendsfrombaseclass.cs
    |_plugin4extendsfrombaseclass.cs

现在我想开始构建,它为我创建了 5 个文件: 1 个 baseplugin.dll(包含所有 3 个核心类) 4 个名为 plugin1.dll ... plugin4.dll 的文件

所以所有插件都引用基类,但我也需要基类作为自己的库

我怎样才能做到这一点?

4

2 回答 2

1

如果你不想使用 MSBuild 来处理它,你不能这样做:

<Csc Sources="_src\*.cs" 
     TargetType="library"
     OutputAssembly="Out\Base.dll" />

编译base.dll,然后创建插件的itemgroup并批量构建它们:

<ItemGroup>
  <Plugin Include="_plugins\*.cs" />
</ItemGroup>

<Message Text="%(Plugin.Identity) => %(Plugin.Filename).dll" />

<Csc Sources="%(Plugin.Identity)"
     References="Out\Base.dll"
     TargetType="library"
     OutputAssembly="Out\%(Plugin.Filename).dll" />

这将为每个源文件提供一个插件 dll - 每个都链接到 base.dll。

编辑: 要使其成为项目构建的一部分,请将上述所有内容包装在一个目标中,例如:

<Target Name="BeforeBuild">

</Target>

并将其放在项目文件的末尾(卸载项目并编辑项目文件)。

于 2012-11-30T08:08:31.397 回答
1

创建五个项目:一个构建 coreclasses.dll,另一个构建每个插件。

于 2012-11-29T20:45:37.687 回答