具有不同输出文件的项目

时间:2012-11-29 15:10:16

标签: visual-studio msbuild visual-studio-2012

我创建了一个包含两个文件夹的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作为自己的库

我该怎么做?

2 个答案:

答案 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>

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