【问题标题】:Build project's components to own .dlls构建项目的组件以拥有 .dll
【发布时间】:2016-05-12 08:29:36
【问题描述】:

我有一个项目,其中包含很多类。我将此项目用作我的一个应用程序的插件库。这个应用程序可以从这个项目构建的一个 .dll 加载所有这些插件。

问题是,我需要在第三方应用程序中使用这些插件。此应用程序只能为每个 .dll 加载一个插件。我在这里的选择很少。据我所知,我可以为每个文件创建新项目并构建它们。但如何解决它是草率的方式。

那么,有什么方法可以为每个类或一组类构建一个项目?

对我来说,这听起来像是一些脚本的任务。是否可以使用 psake 或 powershell 来实现这一点?

感谢您的问候

【问题讨论】:

  • 创建一个只有一个源文件的模板项目文件,将该源文件替换为类似 $(MySourceFile).cs 的 msbuild 属性,将输出文件名相应地设置为 $(MySourceFile).dll,然后调用msbuild xxx.csproj /p:MySourceFile=SourceA.csmsbuild xxx.csproj /p:MySourceFile=SourceB.cs等等,在PS中循环还是批处理文件?

标签: c# build msbuild psake


【解决方案1】:

好吧,我相信他们已经在自己的 bin 目录中这样做了。 那是如果您将程序集作为组件的意思。如果您在谈论类,那么您应该将它们放在单独的程序集中并使用相同的方法。

您可以右键单击程序集并转到属性,构建您可以看到“输出路径”字段以及“XML 文档”复选框,这是第三方应用程序在使用 .dll 时查看您的 XML cmets 所必需的-s.

【讨论】:

  • 如何“将类放在单独的程序集中”而不将它们拆分到单独的项目中?
  • 好吧,我可能理解错了,把“项目”当成“解决方案”,抱歉。
【解决方案2】:

我能想到的一种方法是根据您已有的插件项目创建一个“模板”项目文件。您可以复制 plugin.csproj,然后删除所有包含的插件类。使用 psake 和 Powershell,您可以动态添加需要程序集的插件类,然后调用 MSBuild 来构建 csproj。

 <ItemGroup>
    <Compile Include="MyFirstPlugin.cs" />
 </ItemGroup>

在 Powershell 中很容易将这样的 xml 节点添加到 csproj 文件中。

ps脚本的伪代码可能是这样的;

define list of plugin cs-files 
for each plugin cs file   
    copy template.csproj to plugin.csproj
    add xml node to include plugin.cs file
    call msbuild on plugin.csproj
    delete plugin.csproj file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2019-02-20
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多