2015-04-14 93 views
0

我使用指南針爲我的C#MVC .NET項目生成樣式表和圖像精靈。大多數情況下這很棒,一切都可以無縫工作。但是,我希望能夠使用MSBuild「發佈」功能作爲我的自動構建的一部分。問題是,指南針產生精靈更改名稱所有的時間,所以我得到這樣一個錯誤,當我嘗試建立: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並刪除舊的?有沒有人碰到類似的東西?

回答

2

從我個人的經驗來看,只要他們是文件系統上的Web應用程序的一部分,從Visual Studio的Web部署或發佈將選取不屬於解決方案的文件。

例如:

MVCSite
- 圖像/ spirtes.png

如果您是從MVC站點,圖像文件夾的內容的此副本將發佈在Web服務器上覆制即使它們不包含在項目文件中。

---編輯

上述解決方案將與網站,而不是一個Web應用程序。以下內容將與Web應用程序一起使用。從MSBuild的

一下添加到出版分佈的末端(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 

輸出

Copying Test\fo1.txt to obj\Release\Package\PackageTmp\fo1.txt. 
Copying Test\foo.txt to obj\Release\Package\PackageTmp\foo.txt. 
+0

糟糕!肯定沒不是說要冷靜下來,但不知道我是否準備好上任。我正在進行文件系統部署,因爲這需要移交給實際部署的操作。目前主要的已知上行是發佈將轉換應用於web.config。但是......我想盡可能地利用構建在流程中的MS和潛在的隱藏好處。你是說我可以發佈「images /」,並且「images/sprite.png」,「images/other-sprite.png」,「images/yet-another-sprite.png」,「images/*。png 「會全部發表嗎? – jameslafferty

+0

我更新了答案,以包含可用於Web應用程序的東西 –

+0

謝謝,Scott!奇蹟般有效。 – jameslafferty