如何在 Visual Studio 的发布配置文件中包含动态生成的文件
Posted
技术标签:
【中文标题】如何在 Visual Studio 的发布配置文件中包含动态生成的文件【英文标题】:How to include dynamically generated files in Visual Studio's publish profile 【发布时间】:2017-05-12 18:11:19 【问题描述】:我们的构建会自动将 javascript/css 文件捆绑在一起,并在文件名中添加校验和以便于验证。因为这些是自动生成的并且名称会发生变化,所以我无法将它们包含在解决方案中。我试过浏览 msdn 链接,但找不到所有可能标签的完整架构。
我发现但无法理解的东西: How to Edit deployment settings in Publish Profile
我也在 SO 上看到了this 的答案,但我无法让它工作,它试图将它放在 obj 文件夹中,而不是发布文件夹中,而且我不能找到架构并尝试找出如何重定向它。
理想情况下,最终目标是让发布配置文件将位于项目中 bundles 文件夹下的这些文件复制到 PublishProfile.pubxml 文件中指定的发布目录中的 bundles 文件夹中。
感谢您的帮助!
【问题讨论】:
不确定您所说的“轻松验证”究竟是什么意思,这是否符合您的要求? msdn.microsoft.com/en-us/magazine/mt795185 简单的验证,我的意思是很容易看出到底是哪个css文件部署到了服务器上,所以如果有css问题,不用去挖,很快就能识别出部署了正确的 css(对于 js 也是如此)。问题不在于那个,我不想更改当前的文件命名结构,因为它解决了我们的问题和痛点。 【参考方案1】:我最终发现 someone 有类似的问题,他帮助我了解我需要在链接的 SO 答案中更改什么 我最终得到了以下结构,它从项目的根目录中获取所有 css 和 js 文件(看起来你可以只发明那些 JSFile 和 CSSFile 标签,它们只是稍后使用的名称),然后发送它们到 DestinationRelativePath 标记,它需要 %(Filename)%(Extension) 位(否则它只会尝试创建一个名为 bundles 的文件)。 JSFile.Identity 似乎给出了文件列表。
这就是我最终的结果。请注意,CSS 有 RecursiveDir 部分,但它实际上并没有做任何事情,并且本地发布和 teamcity 都正确发布了所有内容。
<PropertyGroup>
<CollectFilesFromContentDependsOn>
AddFilesToDeploy;
$(CollectFilesFromContentDependsOn);
</CollectFilesFromContentDependsOn>
</PropertyGroup>
<!--Add files to deploy -->
<Target Name="AddFilesToDeploy">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="CurrentAssembly" />
</GetAssemblyIdentity>
<ItemGroup>
<JsFile Include="bundles\*.js" />
<CssFile Include="bundles\*.css" />
<FilesForPackagingFromProject Include="%(JsFile.Identity)">
<DestinationRelativePath>bundles\%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
<FilesForPackagingFromProject Include="%(CssFile.Identity)">
<DestinationRelativePath>bundles\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
【讨论】:
感谢您在这里分享您的解决方案,您可以将其标记为答案,这样可以帮助遇到相同问题的其他社区成员。以上是关于如何在 Visual Studio 的发布配置文件中包含动态生成的文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure 管道中使用 Visual Studio 中的发布配置文件选项?
如何在 Visual Studio 中为自定义配置文件添加配置转换?
如何在 Visual Studio 2019 中使用 git bash 终端配置文件?
Visual Studio 2012 - 数据库项目 - 设置发布的默认配置文件