[asp.net-mvc]MSBuild 发布和指南针生成的精灵

发布时间: 2017/3/25 18:00:16
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我用指南针来为我的 MVC.NET C# 项目生成样式表和图像的精灵。主要的这是很大,一切都配合得天衣无缝。然而,我想能够使用 MSBuild"发布"功能作为我自动构建的一部分。问题是,罗盘生成的精灵更改名称的时间,所以我得到像这一错误,当我试图建立︰

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets(2972,5): error : Copying file images\icons-s88f86b4a16.png to obj\Release\Package\PackageTmp\images\icons-s88f86b4a16.png failed. Could not find file 'images\icons-s88f86b4a16.png'.

我不确定如何解决此问题。有没有办法自动将新图像添加到 csproject,并删除旧的吗?任何人遇到类似的事情了吗?

解决方法 1:

从我个人的经验,Web 部署或发布从 Visual Studio 会接不是您的解决方案,只要他们因为他们是在文件系统上的 web 应用程序的一部分的一部分的文件。

例如︰

MVCSite
— — images/spirtes.png

如果您要发布从 MVC 网站此副本,即使它们不包含在项目文件在您的 web 服务器上图像文件夹中的内容将被复制。

---编辑

上面的解决方法将使用一个网站并不是 web 应用程序。以下将与 web 应用程序工作。

将它添加到年底发布配置文件 (Production.pubxml)

  <Target Name="CustomCollectFiles">
    <ItemGroup>
      <_CustomFiles Include="Test\**\*" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)   </DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>
  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>

    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
  </PropertyGroup>
</Project>

示例生成脚本

echo 'Hello, world.' > "%WORKSPACE%\TestMVC\Test\fo1.txt"

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" "%WORKSPACE%\TestMVC.sln" /p:Configuration=Release /p:Platform="Any CPU" /p:PublishProfile=Production

MSBuild 的输出

Copying Test\fo1.txt to obj\Release\Package\PackageTmp\fo1.txt.
Copying Test\foo.txt to obj\Release\Package\PackageTmp\foo.txt.
赞助商