我们可以更改包裹模板的默认位置吗?或者至少添加更多地点?
我想创建一些模板并将它们添加到源代码控制中,但我不太热衷于将C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems
文件夹中的文件添加到源代码管理中。
你是如何处理的?
答案 0 :(得分:1)
我从来没有尝试过移动它,但是当我们构建模板时,我们有一个包含公共材料的Common项目(我们就像那样创造性),比如数据库的配置设置以及模板包。该解决方案还有一个启动项目,其中没有任何东西,但是一个后期构建脚本,我们将模板复制到上面的路径中。这样人们就不用担心这种“复杂的复制东西”开始了。
copy /y "$(SolutionDir)\SQL\SSIS\PackageTemplate.dtsx" "$(DevEnvDir)\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems"
正如rvphx提醒我的那样,您将希望让使用您的模板的人重置包ID。否则,您的sysdtslog90 / sysssislog表的报告会非常复杂。免费的visual studio add,BIDSHelper具有从项目窗口重置GUID的功能。我使用自己的模板遇到的另一个问题是它们是我们提供的物理文件名,但与SSIS中的Package Name属性不匹配。我们要么指定一个垃圾物理文件名,然后将其重命名为正确的名称,要么记得将其修复到包属性中。
答案 1 :(得分: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()}"/>
答案 2 :(得分:1)
明确回答你的问题:
不,你不能改变它。 不,你不能添加更多的位置。
如上所述,您可以将脚本从一个位置复制到此文件夹。这就是我们大多数人所做的事情。