3

我有一个大型“产品”,它部署为一组 zip 文件(分为 Web 应用程序、Web 服务、数据库、工具等)。

我目前使用 MSBuild 从 VSS 收集文件、构建、压缩并复制到网络共享。我正在迁移到 TFS,虽然其他所有项目类型都可以正常构建,但我正在尝试找到一种方法使数据库安装脚本脱离源代码控制,并有效地将它们复制到自己文件夹中的放置位置(用于压缩)。

我尝试使用“空 C# 项目”(使用 assemblyInfo 类以避免“无源”警告)创建解决方案文件,其中所有脚本和支持文件都标记为内容和“始终复制”,但文件不是出现在放置文件夹中。这些文件确实按照我想要的方式在本地构建,但是通过 TFS 构建时它不起作用。

我想知道是否有任何其他方法可以做我需要的事情 - 我受限于拥有数据库脚本(即没有转换为 MSI)。我已经搜索了我能想到的所有地方,但都是空白!

TIA,西姆斯。

4

3 回答 3

1

将文件标记为资源并始终设置为副本。

于 2013-01-04T12:56:40.707 回答
1

您是否考虑过为此编写自己的 msbuild 项目?然后,您可以将所有符合您条件的文件复制到 $(outdir) 文件夹。

这些方面的东西应该会有所帮助:

<Project DefaultTargets="CopySqlScripts">
  <Target Name="CopySqlScripts">
    <ItemGroup>
      <SqlScripts Include="$(MSBuildProjectDirectory)\*.sql" />
    </ItemGroup>
    <Copy SourceFiles="@(SqlScripts)" DestinationFolder="$(OutDir)\SqlRelease" />
  </Target>
</Project>
于 2013-01-04T16:05:11.800 回答
1

谢谢大家看这个,原来我使用的csproj文件有问题。

我创建了一个全新的项目(C# 库)并向其中添加了几个文件 - 将它们标记为 Content 和 Always Copy,它们位于放置文件夹中。

这有点快速和肮脏,但是一旦我确定一切正常,我将添加一个构建后事件来删除虚假的 dll :)

于 2013-01-06T16:05:42.263 回答