【问题标题】:Change the referenced dll in a SSIS script task at build / deploy or runtime在构建/部署或运行​​时更改 SSIS 脚本任务中引用的 dll
【发布时间】:2017-06-20 15:45:27
【问题描述】:

最近我已将我们所有的 SSIS 项目添加到持续集成管道中。这些项目使用 TeamCity 中的 MSBuild 构建,打包并推送到 nuget 提要。我们使用 Octopus 和一些建立在后台 SQL 服务器管理对象 (SMO) 上的手动 PowerShell 来部署它们。除了一个项目外,这一切都有效。有问题的项目包含一些引用外部程序集的脚本任务。该程序集是在同一管道中构建的,并且其程序集版本号由该过程的一部分更新。问题在于 SSIS 项目现在引用 GAC 中的强命名 dll,由于版本号已更改,该 dll 不存在。

有谁知道在构建时更新 CI 服务器上的引用或在部署时覆盖版本号的方法?

【问题讨论】:

  • 你有没有找到一个好方法来做到这一点?遇到类似的问题
  • 我们最终停止更新程序集引用,因此我们拥有一个具有静态版本号的强命名 dll,我们可以从 SSIS 包中引用它。这远非理想,并且给我们留下了技术债务,因为每次我们分支代码或进行任何重大更改时,我们都需要手动更新版本号。这是必要的,因此我们不会用新版本覆盖 gac 中现有的 dll,这将为已经存在的 SSIS 包提供不同的功能。如果您找到更好的方法,我很想听听您是如何实现这一目标的。

标签: c# powershell ssis msbuild gac


【解决方案1】:

我知道这篇文章已经很老了,但是已经被浏览了很多,所以这是我找到的一个解决方案。

您需要为构建包含一个“目标”文件。

这是一个示例目标文件:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <E10BOs>C:\Integrations\E10 Uplifts\Epicor 10.2.600.3</E10BOs>
    </PropertyGroup>
    <Target Name="BeforeResolveReferences">
        <CreateProperty Value="$(E10BOs);$(AssemblySearchPaths)">
            <Output TaskParameter="Value" PropertyName="AssemblySearchPaths" />
        </CreateProperty>
    </Target>
</Project>

属性组 E10BOS(可能不止 1 个)然后定义您要构建的版本的 dll 的路径。

需要保存为 myTargetsFile.targets

然后在常规的 VS 项目中,您可以将此行添加到项目文件中(在记事本中的 VS 之外)

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), myTargetsFile.targets))\myTargetsFile.targets" />
</Project>

这使用 GetDirectoryNameOfFileAbove 搜索文件夹树,直到找到您的目标文件,然后导入它。如果您有很多不同的项目都需要更改版本并且您不必找出任何相对路径,这将非常有用!

但是,在 SSIS 中,这似乎不起作用。 什么是硬连线到包 .dtsx 文件中的目标文件的路径,再次在记事本中编辑它并添加以下行(您可能会像以前一样在项目标签末尾附近看到 csharp 条目:

<Import Project="C:\Integrations\E10 Uplifts\Epicor 10.2.600.3\myTargetsFile.targets" />

这会将项目引用的信息传递到脚本中。

然后,所有使用目标文件的项目都可以通过更改您希望他们使用的版本文件夹的路径来更改版本。

希望有帮助吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多