我正在编写一个简短的批处理文件,以准备一个带有Examples项目的控制库DLL,以便通过sip文件进行部署,我有以下问题。
给定已知位置的csproj文件和已知位置的DLL,是否可以从批处理文件中以编程方式更新csproj(通过第三方命令行exe或其他脚本)以添加新的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也存在于dev trunk上(它是从那里复制的),在开发解决方案中,它以非模糊形式引用ControlLibrary.csproj的输出。
本质上,我在这里创建的是一个文件夹结构,用于压缩和运送ControlLibrary以及示例,因此,需要更新引用。
更新-使用Powershell解决
请参阅有关使用Powershell 添加和删除引用的相关问答
csproj
文件是XML文件,您可以轻松地编写命令行应用程序来操作这些文件(添加、删除节点等)。
您可以从批处理文件中调用这样的命令行应用程序。
您可以在以下位置找到该文件的架构:
%windir%Microsoft.NETFramework[framework version]Microsoft.Build.xsd
如SO回答中所述。
我不明白为什么在您的情况下需要修改csproj文件。只要确保csproj文件中的库引用是相对的,即......SDKWPF4.0ControlLibrary.dll
,即使将整个文件夹层次结构移动到新位置,它也会保持良好的工作状态。
如果你想简化将库添加到新项目中的过程,可以看看NuGet。这是分发和部署库的最佳方式。