我创建了一个包含两个文件夹的Project。 “src”文件夹包含coreelements,“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
所以所有插件都引用了baseclass,但我还需要baseclass作为自己的库
我该怎么做?
答案 0 :(得分:1)
创建五个项目:一个构建coreclasses.dll,另一个构建每个插件。
答案 1 :(得分: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>
并将其放在项目文件的末尾(卸载项目并编辑项目文件)。