【问题标题】:Possible to remove and add a reference to csproj programmatically via a batch file?可以通过批处理文件以编程方式删除和添加对 csproj 的引用吗?
【发布时间】:2012-01-24 17:12:21
【问题描述】:

我正在编写一个简短的批处理文件来准备一个带有示例项目的控件库 DLL,以便通过 sip 文件进行部署,并且有以下问题。

给定一个位于已知位置的 csproj 文件和一个位于已知位置的 DLL,是否可以从批处理文件(通过第三方命令行 exe 或其他脚本)以编程方式更新 csproj 以添加新的 DLL?

我的文件夹结构是

/Build 
   /SDK
      /WPF
          /4.0 : ControlLibrary.dll sits here
   /Examples
      /WPF
          /4.0 : Examples.csproj sits here

假设批处理文件在/Build级别,有没有办法修改Examples.csproj来引用ControlLibrary.dll?

澄清一下,我之所以有这样的结构,是因为我希望部署一个示例 csproj 以随我的控制库一起提供。 examples.csproj 应该引用 SDK/ 下的混淆控制库。 Examples.csproj 也存在于开发主干(从中复制它)中,并且在开发解决方案中它引用了 ControlLibrary.csproj 的非混淆形式的输出。

本质上,我在这里创建的是一个文件夹结构,用于压缩和发送 ControlLibrary plus 示例,因此需要更新参考。

更新 - 使用 Powershell 解决

请使用 Powershell 在adding and removing references 上查看此相关问题和答案

【问题讨论】:

  • 如果你在尝试部署,那为什么要修改csproj文件呢?
  • @JohnSaunders 谢谢,我刚刚在 Q 中添加了更多信息。这是否澄清了它?

标签: c# dll msbuild batch-file csproj


【解决方案1】:

csproj 文件是 XML 文件 - 您可以轻松编写命令行应用程序来操作这些文件(添加、删除节点等)。

您可以从批处理文件中调用这样的命令行应用程序。

您可以在以下位置找到此文件的架构:

%windir%\Microsoft.NET\Framework\[framework version]\Microsoft.Build.xsd

this SO answer 中所述。

【讨论】:

  • 谢谢 Oded,你知道 MSBuild 或任何 Visual Studio 命令行工具是否可以修改引用吗?如果不是,我确定我可以很快编写一个代码。问候,
  • @Dr.AndrewBurnett-Thompson - 我不知道。这是非常不寻常的事情(因为项目/解决方案文件通常不需要作为编译的一部分进行更改)。
  • 很公平,感谢您的回答! Csproj 破解它是:)
  • @Dr.AndrewBurnett-Thompson - XDocument 是你的朋友 ;)
  • vbscript 在这里可能有用(避免另一个 csproj,sln 只是为了更改一行 XML 文件)
【解决方案2】:

我不明白为什么您需要修改 csproj 文件。只需确保 csproj 文件中的库引用是相对的,即..\..\..\SDK\WPF\4.0\ControlLibrary.dll,即使您将完整的文件夹层次结构移动到新位置,它也会继续正常工作。

如果您想简化将库添加到新项目的过程,请查看NuGet。这是分发和部署库的最佳方式。

【讨论】:

  • 感谢您的回答达米尔。在这种情况下,不可能使用相对引用。我已经更新了 Q 以澄清要求
  • Nuget 看起来很有趣。你知道这是否也可以用于商业 dll 吗?购买时,这个将有一个试用版 + 开发者许可证密钥来解锁。如果许可证密钥是通过单独的站点分发的,是否可以锁定全部通过 nuget 分发?
  • @Dr.AndrewBurnett-Thompson 我不确定发布包的 NuGet Online Gallery 条款和条件,但我想这是允许的。至少已经发布了几个商业库:其中包括 RavenDB、JustMock 和 Kendo UI。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 2011-08-02
  • 2011-02-03
  • 2016-01-03
相关资源
最近更新 更多