.csproj
dosyaları inşa çıktıda bakıldığında her üç proje aşağıdaki hedefleri çalıştırmak gibi görünüyor dönüş ithalat \Web\Microsoft.Web.Publishing.targets
yılında
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Bu dosyayı da VSToolsPath altında: web için projeler varsayılan olarak aşağıdakileri içerir (benim dev makinede, bu C:\Program Files (x86)\MSBuild\VisualStudio\v12.0
'a karşılık gelir).
bu dosyanın ilginç segmenti benziyor aşağıdadır:
<ProjectProfileTransformFileName Condition="'$(ProjectProfileTransformFileName)'=='' And '$(PublishProfileName)' != '' ">$(_ProjectConfigFilePrefix).$(PublishProfileName)$(_ProjectConfigFileExtension)</ProjectProfileTransformFileName>
<!--if $(TransformWebConfigEnabled) is also enabled and the ConfigTransform and ProfileTransform happen to have same filename, we default $(ProfilefileTransformWebCofnigEnabled) to false so it doesn't do double transform-->
<ProfileTransformWebConfigEnabled Condition="'$(ProfileTransformWebConfigEnabled)'=='' And '$(TransformWebConfigEnabled)' == 'true' And ('$(ProjectProfileTransformFileName)' == '$(ProjectConfigTransformFileName)')">False</ProfileTransformWebConfigEnabled>
false ProfileTransformWebConfigEnabled
, sadece varsayılan şartına bağlıdır ProfileTransformWebConfigCore
çalışan, sonucu oluyordu dönüşümü çift ProjectProfileTransformFileName
ve ProjectConfigTransformFileName
eğer eşittir. Bu hedef çıkışı aşağıdaki sorunlu proje için
<Target Name="DebugWebConfigTransform" AfterTargets="PreProfileTransformWebConfig">
<Message Text="ProjectProfileTransformFileName: $(ProjectProfileTransformFileName)"/>
<Message Text="ProjectConfigTransformFileName: $(ProjectConfigTransformFileName)"/>
</Target>
:
benim projelerin üçü için aşağıdaki hedef eklenen bu iki değer farklıydı yana
DebugWebConfigTransform:
ProjectProfileTransformFileName: Web.UAT.config
ProjectConfigTransformFileName: Web.Release.config
, çift Yukarıda açıklanan nedenlerden dolayı dönüşüm meydana geldi.
ProjectConfigTransformFilename öğesinin Web.Release.config olarak ayarlanması, .sln
dosyamdaki ProjectConfigurationPlatforms
dosyasının yanlış olmasıydı. Bu proje için .sln
dosyasının Yapılandırma | Platform çifti UAT|Any CPU
eşleştirildi Release|Any CPU
.
I (bu UAT iki kez dönüşümü uygulayarak farksızdı nedeniyle benim dönüşümler kesin doğası ve uygulandıkları sıraya) aslında UAT ve Yayın sonucu dönüşür uygulayarak düşünüyorum.
Çözüm dosyasındaki ProjectConfigurationPlatforms
eşleştirmesi güncellemesi, benim için sorunu çözdü.