Преобразование файла crossdomain.xml при публикации в веб-приложении asp.net - PullRequest
0 голосов
/ 17 марта 2012

Я пытаюсь преобразовать crossdomain.xml для разных сред, как обычные файлы web.config. Я пытался использовать надстройку SlowCheetah для visual studio, но она плохо работает с веб-приложениями. Он продолжал публиковать файлы преобразования вместе с преобразованным файлом , который я не хотел. Более того, он сделал это и для преобразования web.config.

Моя другая мысль состояла в том, чтобы переименовать файл и все преобразовать его в crossdomain. $ (Configuration) .config в надежде, что VS подберет его и преобразует, а затем переименует где-нибудь в процессе сборки в crossdomain.xml. Но VS не будет преобразовывать это вообще. Вот как выглядят мои трансформации на данный момент.

crossdomain.config

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain- policy.dtd">
<cross-domain-policy>
   <allow-access-from domain="*" secure="false" />
</cross-domain-policy>

crossdomain.stage.config

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
   <allow-access-from domain="*.foo.com" secure="true" xdt:Transform="Replace" />
</cross-domain-policy>

У кого-нибудь есть предложения?

UPDATE Чем больше я трачу на это времени, тем больше понимаю, что развертывание в .NET - это настоящий кошмар. Все еще пытаюсь понять это. Похоже, что функция публикации VS делает своего рода наполовину развертывание. Он вызывает MSBuild для сбора файлов для развертывания, а затем развертывает его вручную вне MSBuild. Таким образом, нет способа получить путь развертывания для преобразования. Я должен был бы заглушить это в MSBuild в качестве параметра.

1 Ответ

0 голосов
/ 27 марта 2012

Ненавижу отвечать на мой вопрос, но следующая ссылка помогла разобраться:

https://stackoverflow.com/a/5381408/546709

<Target Name="TransformOtherConfigs" AfterTargets="CollectWebConfigsToTransform">
<ItemGroup>
<WebConfigsToTransform Include="@(FilesForPackagingFromProject)"
                       Condition="'%(FilesForPackagingFromProject.Extension)'=='.config'"
                       Exclude="*.$(Configuration).config;$(ProjectConfigFileName)">
    <TransformFile>%(RelativeDir)%(Filename).$(Configuration).config</TransformFile>
    <TransformOriginalFile>$(TransformWebConfigIntermediateLocation)\original\%(DestinationRelativePath)</TransformOriginalFile>
    <TransformOutputFile>$(TransformWebConfigIntermediateLocation)\transformed\%(DestinationRelativePath)</TransformOutputFile>
    <TransformScope>$([System.IO.Path]::GetFullPath($(_PackageTempDir)\%(DestinationRelativePath)))</TransformScope>
</WebConfigsToTransform>
   <WebConfigsToTransformOuputs Include="@(WebConfigsToTransform->'%     (TransformOutputFile)')" />
</ItemGroup>
</Target>
...