4

我们可以更改包模板的默认位置吗?或者至少添加更多位置?

我想创建一些模板并将它们添加到源代码管理中,但我不太热衷于将文件C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems夹上的文件添加到源代码管理中。

你怎么处理?

4

3 回答 3

1

我从未尝试过移动它,但是当我们构建模板时,我们有一个 Common 项目,其中包含常见的材料(我们很有创意),例如数据库的配置设置以及模板包。该解决方案还有一个启动项目,其中除了一个构建后脚本之外什么都没有,我们将在其中将模板复制到上述路径中。这样人们就不必担心这种“复杂的复制东西”来开始。

copy /y "$(SolutionDir)\SQL\SSIS\PackageTemplate.dtsx" "$(DevEnvDir)\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems"

正如 rvphx 提醒我的那样,您将希望有人使用您的模板来重置包 ID。否则,您对 sysdtslog90/sysssislog 表的报告会变得非常复杂。免费的 Visual Studio 插件BIDSHelper具有从项目窗口重置 GUID 的功能。我在使用我们自己的模板时遇到的另一个问题是它们会使用我们提供的物理文件名,但与 SSIS 中的 Package Name 属性不匹配。我们要么分配一个垃圾物理文件名,然后将其重命名为正确的名称,要么只记得在包属性中修复它。

于 2013-02-22T14:28:43.170 回答
1

我们一直使用的模板非常简单(主要是一堆标准变量、连接管理器和 SSIS 2008 的事件处理程序),几年前我编写了一个NAnt脚本来构建一个简单的单包解决方案。由于 .dtsx 格式只是 XML,因此从极简包中制作文本模板文件并使用 NAnt 的<replacetokens>任务来替换包名称和 GUID 等内容并不太难。甚至可以轻松创建唯一的 GUID,因为 NAnt 允许您在脚本中嵌入 C# 代码:

<script language="C#" prefix="script" >
    <references>
        <include name="System.dll" />
        <include name="System.DirectoryServices.dll" />
    </references>
    <imports>
        <import namespace="System.DirectoryServices"/>
    </imports>
    <code>
        <![CDATA[
        [Function("create-guid")]
        public static string CreateGuid() 
        {
            return Guid.NewGuid().ToString().Trim();
        }
        ]]>
    </code>
</script>

<property name="PACKAGE_DTSID_GUID" value="${script::create-guid()}"/>
<property name="PACKAGE_VERSION_GUID" value="${script::create-guid()}"/>
于 2013-02-22T18:10:46.550 回答
1

明确回答您的问题:

不,你不能改变它。不,您不能添加更多位置。

如前所述,您可以将脚本从一个位置复制到此文件夹。这是我们大多数人所做的。

于 2013-02-23T15:14:28.033 回答