msbuild SLN 并且仍然获得单独的项目输出?

2024-04-05

我有一个普通的 SLN 文件,我可以从命令行使用 msbuild 很好地编译它。我这样做:

C:\slndir> msbuild /p:OutDir=C:\slnbin\

它将所有内容转储到 C:\slnbin,但网站除外,网站部署到 C:\slnbin_PublishedWebsites\。

我想要的是不仅将所有二进制文件放入 bin 目录中,而且还让每个可执行程序都有自己的“部署”文件夹,类似于每个网站所获得的文件夹。

例如,如果我有以下项目: - 常见的 - 库1 - 服务1 - 库2 - 服务2

我想得到:

  C:\slnbin\ // Everything
  C:\slbin\Deploy\Service1 // Common, Lib1, Service1
  C:\slbin\Deploy\Service2 // Common, Lib2, Service2

我尝试做类似“msbuild /p:OutDir=C:\slnbin\$(ProjectName)”的事情,但它只是将其视为文字并创建一个实际的“$(ProjectName)”子目录。

最好,我不必修改每个单独的项目等等。

这可能吗?简单的?


正如 John Saunders 所说,您需要有一个主 MSBuild 文件来处理该过程。

这是一个使用的示例MSBuild 社区任务 http://msbuildtasks.tigris.org/ : 获取解决方案项目获取给定解决方案的项目

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Package">

  <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

  <!-- Specify here, the solution you want to compile-->
  <ItemGroup>
    <Solution Include="C:\slndir\solution.sln"/>
  </ItemGroup>

  <PropertyGroup>
    <Platform>AnyCPU</Platform>
    <Configuration>Debug</Configuration>

    <!-- Your deployment directory -->
    <DeployDir>C:\slbin\Deploy</DeployDir>
  </PropertyGroup>

  <!-- Gets the projects composing the specified solution -->
  <Target Name="GetProjectsFromSolution">
    <GetSolutionProjects Solution="%(Solution.Fullpath)">
      <Output ItemName="ProjectFiles" TaskParameter="Output"/>
    </GetSolutionProjects>
  </Target>

  <Target Name="CompileProject" DependsOnTargets="GetProjectsFromSolution">
    <!-- 
      Foreach project files
        Call MSBuild Build Target specifying the outputDir with the project filename.
    -->
    <MSBuild Projects="%(ProjectFiles.Fullpath)"
             Properties="Platform=$(Platform);
             Configuration=$(Configuration);
             OutDir=$(DeployDir)\%(ProjectFiles.Filename)\"
             Targets="Build">
    </MSBuild>
  </Target>
</Project>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

msbuild SLN 并且仍然获得单独的项目输出? 的相关文章

随机推荐

  • Mozilla 扩展的内容安全策略

    我在 Mozilla 和 Chrome 中都有一个扩展 在我的扩展中我调用了一个远程 JS 文件 为了避免 Chrome 中的 CSP 我将规则添加到 manifest json 中 并且我的文件通过 HTTPS 传输 因此一切都很完美 但
  • 流星中的页面转换?

    我有一个流星移动应用程序结构上在职的 我确实需要将视图与一些页面转换缝合在一起 我看了看铁过渡剂 https github com tmeasday iron transitioner项目但看起来开发已经停止了 最后一次提交是在 6 个月前
  • 连接 MYSQL 表并按两个字段排序?

    我在 MYSQL 中对表进行排序时遇到问题 我的桌子设置如下 订单详细信息 Order ID 运输费 printed 产品详情 ID Order ID SKU 位置 我想选择打印 FALSE 的所有订单 但还要按运费排序 然后按 SKU l
  • 在 Android 中,即使屏幕进入睡眠模式后仍会继续振动

    在我的应用程序中 我通过以下代码启动 VIBRATOR SERVICE long pattern 50 100 1000 Vibrator vibe Vibrator context getSystemService Context VIB
  • KVC setNilValueForKey:建议调用方法而不使用属性访问器

    The KVC文档 http developer apple com library mac documentation Cocoa Conceptual KeyValueCoding Articles AccessorConvention
  • 使用 requirejs 和 r.js 优化器时无法加载 jQuery 插件

    我的 requirejs 优化器遇到了一些麻烦 运行优化器后 我在构建 编译文件中收到一些错误消息 在没有优化步骤的情况下运行我的网络应用程序时 我没有任何错误 这是我的 client js 文件 包含配置 coffeescript req
  • 选择行并更新相同行以进行锁定?

    我需要编写一个过程 允许我选择 x 行 同时更新这些行 以便调用应用程序知道这些记录已锁定并正在使用 我的表中有一个名为 锁定 的列 下次调用该过程时 它将仅提取下 x 条未选中 锁定 列的记录 我已经阅读了一些有关 SQL Server
  • 如何拥有两个独立的任务调度程序?

    我正在编写一个游戏 并且使用 OpenGL 我要求将一些工作卸载到 OpenGL 上下文处于活动状态的渲染线程 但其他所有工作都由普通线程池处理 有没有一种方法可以强制任务在特殊的线程池中执行 以及从线程池创建的任何新任务async也被调度
  • 如何使用 pd.to_datetime() 设置频率?

    在拟合统计模型时 我收到有关日期频率的警告 首先 我导入一个数据集 import statsmodels as sm df sm datasets get rdataset package datasets dataname airqual
  • GmailApp.getAliases() 返回一个空白列表

    我有一个有别名的用户 在 admin google com 中 我可以查看所有别名 但是当使用该用户时 我仅使用以下代码创建一个 Google Apps 脚本 var aliases GmailApp getAliases Logger l
  • 在类定义中使用类自己的类型[重复]

    这个问题在这里已经有答案了 以下代码无法按预期工作 显然 我不能在类定义中使用类自己的类型 class Foo def init self key str gt None self key key def eq self other Foo
  • 无法通过 SSH 克隆 Azure DevOps 存储库,需要密码

    我很难尝试通过 SSH 将 Azure DevOps 私有存储库克隆到运行 Ubuntu 18 04 的本地计算机 下列的 我使用创建了 SSH 密钥ssh keygen并提供密码 将公钥添加到 Azure DevOps 下用户设置 gt
  • 使用 C# 写入 CSV 文件

    我正在寻找一种在 CSV 文件的不同单元格中写入字符串的方法 我正在使用这个程序 private void button1 Click object sender EventArgs e string filePath E test csv
  • 通过 PowerShell 将所有已安装的软件分组到一个单元中

    我让 PowerShell 脚本在我们网络上的所有 PC 上运行 并从 PC 获取信息并将其保存在 CSV 文件中 并每次使用新 PC 作为新行更新文件 logData pscustomobject ComputerName Compute
  • 通过VB6发送电子邮件

    我想知道是否有办法通过VB6发送电子邮件 SMTP 我有一个应用程序 只需要在用户完成后发送一封简单的电子邮件 让一组人知道该应用程序已处理 有没有办法做到这一点 是的 取决于您使用的 Windows 版本 假设更高版本之一 CDO Mes
  • onEdit 可以以编程方式创建触发器吗?

    我编写了一个简单的脚本 尝试以编程方式从 onEdit 函数创建脚本 function onEdit test function test triggerLater function customMsgBox Browser msgBox
  • Simulink/HDL Coder 中的反馈循环

    我有一个 Simulink HDL 编码器系统 请参见下图 我有 3 个输出和 3 个输入 我希望我的系统运行 10 次 每次迭代后 它应该选择输出并将它们用作输入 我怎样才能做到这一点 使用存储器和每个信号的初始值块构建一个循环 内存块允
  • 一家大型、分散的公司应该如何与 iOS 开发者计划合作?

    I think这是SO的工作 而不是程序员 https softwareengineering stackexchange com 如果我错了请告诉我 我在一家公司工作 该公司在全国 美国 各地设有多个办事处 我所在的部门希望获得 Appl
  • 如何检查函数的类型参数是否静态解析?

    非常简单的例子 let myfun x x在智能感知中 它显示 x a gt a 在 FSI 中 它显示 x a gt a let inline myfun x x在智能感知中 它显示 x a gt a 在 FSI 中 它显示 x a gt
  • msbuild SLN 并且仍然获得单独的项目输出?

    我有一个普通的 SLN 文件 我可以从命令行使用 msbuild 很好地编译它 我这样做 C slndir gt msbuild p OutDir C slnbin 它将所有内容转储到 C slnbin 但网站除外 网站部署到 C slnb