Хорошо, я понял это после того, как перебрал этот блог,
http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx
На шаге 4 он показывает аргумент командной строки, которого я раньше не видел,
/ Т: TransformWebConfig
К сожалению, одно это не решает проблему. Он выполняет преобразование, но преобразование находится в obj / Release / TransformWebConfig / transformed / Web.config (obj / Release или obj / Debug или obj / YourTranformName).
Итак, чтобы наконец найти достойное решение, это то, что мне пришлось сделать.
<exec program="${exec.msbuild}" failonerror="true">
<arg value="${path.sourceCode}/ProjectFolder/Project.csproj" />
<arg value="/p:Configuration=Release" />
<arg value="/t:ResolveReferences" />
<arg value="/t:_CopyWebApplication" />
<arg value="/t:TransformWebConfig" />
<arg value="/p:OutDir=${path.buildFromProject}/temp/" />
<arg value="/p:WebProjectOutputDir=${path.buildFromProject}/ProjectBuild/" />
</exec>
<delete dir="${path.build}/temp" failonerror="true"/>
<delete file="${path.build}/ProjectBuild/Web.config" failonerror="true"/>
<delete file="${path.build}/ProjectBuild/Web.Debug.config" failonerror="true"/>
<delete file="${path.build}/ProjectBuild/Web.Release.config" failonerror="true"/>
<copy file="${path.sourceCode}/ProjectFolder/obj/Release/TransformWebConfig/transformed/Web.config" tofile="${path.build}/ProjectBuild/Web.config" />
Обратите внимание, что OutDir отличается от WebProjectOutputDir. Это причина, почему:
- OutDir дает вам все в
проект "решение".
- WebProjectOutputDir дает вам
Минимум для веб-проекта
(т.е. не все решение).
Из других проектов в решении, использующих OutDir, пришло много лишнего багажа, который нам не нужен, поэтому мы просто отправили OutDir во временную папку и удалили, как вы можете видеть на шагах выше. Кстати, OutDir абсолютно необходим. Сборка не будет работать, если вы удалите ее. Кажется, что WebProjectOutputDir работает вне OutDir.
Во всей этой настройке есть только один незначительный недостаток. Многие файлы pdb отсутствуют в библиотеке bin. Единственный скопированный pdb был из веб-проекта.
Если кто-нибудь найдет одношаговое решение с MSBuild для этого, пожалуйста, опубликуйте его: P
Хотя это хорошее решение, оно все еще идеально на 99,9999% и очень похоже на перечисленные выше, я уверен, что будет небольшой нюанс или пропущенный шаг.