Добавление файлов в Azure cspkg в событии afterbuild msbuild? - PullRequest
4 голосов
/ 21 июля 2011

У меня есть приложение MVC, над которым я работаю в Azure, за исключением того, что в опубликованный файл .cspkg добавлен файл css / jscript, созданный в процессе последующей сборки (это работает, если я публикую на обычном сервере, который не использует Azure).

В процессе сборки я минимизирую и объединяю файлы, затем добавляю их в zip-файл для развертывания:

<PackageLocation>..\Deploy\Website.zip</PackageLocation>

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

Какой код MSBuild мне нужно изменить, чтобы выполнить ту же задачу, но вместо этого добавить в cspkg?

Ответы [ 2 ]

3 голосов
/ 12 июля 2012

Вот как я это сделал.В этом примере у меня есть файл .csproj, который является частью решения Azure, и для DLL, созданной моим C # -проектом, нужен конкретный файл XML, чтобы он располагался рядом с ним в развертывании.Вот некоторые фрагменты msbuild из моего файла .csproj, которые показывают эту технику.Вы можете поместить весь этот код ниже импорта Microsoft.CSharp.targets в ваш файл .csproj.

<!-- Identify the Xml input file that must be deployed next to our dll. -->
<ItemGroup>
  <SpecialXmlFileItem Include="c:\temp\MySpecialFile.xml" />
</ItemGroup>

<PropertyGroup>
  <!-- In my case I needed the as-deployed Xml filename to be fixed and yet I wanted it to be possible
       to provide any filename at all to be provided as the source. Here we are defining the fixed, 
       as-deployed filename. -->
  <AsDeployedXmlFilename>MyServiceStorageConfig.xml</AsDeployedXmlFilename>

  <!-- Wire our own AddFilesToProjectDeployment target into the GetCopyToOutputDirectoryItems
       target. That target is evaluated not only as part of normal .csproj evaluation, but also as part
       of .ccproj evaluation. It is how the .ccproj manages to interrogate your dll producing projects 
       about all of the project files that need to be packaged. -->
  <GetCopyToOutputDirectoryItemsDependsOn>
      AddFilesToProjectDeployment;
      $(GetCopyToOutputDirectoryItemsDependsOn)
  </GetCopyToOutputDirectoryItemsDependsOn>
</PropertyGroup>

<Target Name="AddFilesToProjectDeployment">
  <Error Condition="!Exists('@(SpecialXmlFileItem)')"
      Text="The all important and very special XML file is not found: %(SpecialXmlFileItem.ItemSpec)" />
  <ItemGroup>
    <ContentWithTargetPath Include="@(SpecialXmlFileItem->'%(FullPath)')">
      <!-- In my case I wanted to deploy my xml file right next to my .dll, so I included no relative
      path information in the below value of TargetPath, just the simple filename. But, I think if you
      included relative path information in the below value that it would be preserved in the deployment. -->
      <TargetPath>$(AsDeployedXmlFilename)</TargetPath>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </ContentWithTargetPath>
  </ItemGroup>
</Target>

-Берн МакКарти

0 голосов
/ 24 июля 2011

Я думаю, что это просто вопрос времени ... убедитесь, что файлы объединены, уменьшены и помещены в сборку до того, как произойдет этап публикации (упаковки).

Извините, у меня больше нетподробности;Я никогда не пытался делать подобные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...