Интегрированное веб-Развертывание в Visual Studio 2010 довольно хорошо. Это может создать пакет, готовый быть развернутым с помощью MSDeploy на целевой машине IIS. Проблема, этот пакет будет перераспределен клиенту, который установит его самому использование "Приложения Импорта" от IIS, когда MSDeploy будет установлен.
Пакет по умолчанию, создаваемый всегда, включает полный путь от машины разработки, "D:\Dev\XXX\obj\Debug\Package\PackageTmp" в исходном файле манифеста. Это не предотвращает установку, конечно, так как это было разработано этот путь, но это выглядит ужасным в диалоговом окне импорта и не имеет никакого значения клиенту. Хуже он задастся вопросом, что является теми путями, и это выглядит довольно сбивающим с толку.
Путем настройки .csproj файла (путем добавления свойств MSBuild, используемых задачей создания пакета), мне удалось добавить дополнительные параметры к пакету. Однако я провел большую часть дня в этих 2 600 строках длинная сеть. Publishing.targets, пытающийся понять, какой параметр влиял на "поведение" пути разработки, напрасно. Я также пытался использовать setAcl для настройки безопасности на данной папке после развертывания, но мне только удалось сделать это с MSBuild при помощи относительного пути... не должно иметь значения, если я разрешаю первую проблему все же.
Я мог изменить сгенерированный архив после его создания, но я предпочел бы, если бы все было автоматизировано с помощью MSBuild. Кто-либо знает, как сделать это?
Отображаемый путь определяется свойством _MSDeployDirPath_FullPath
.
Это свойство задается следующей цепочкой свойств:
<_MSDeployDirPath_FullPath> @ (_ MSDeployDirPath -> '% (FullPath)')
<_ MSDeployDirPath Include = "$ (_) PackageTe >Dmp
<_PackageTempDir> $ (PackageTempRootDir) \ PackageTmp
$ (IntermediateOutputPath) Package
_MSDeployDirPath - @FullPath> (MSDeployDirPath - @FullPath) <- _PackageTempDir <- $ (PackageTempRootDir) \ PackageTmp
Как видите, у вас не может быть относительного пути, потому что _MSDeployDirPath_FullPath
- это полный путь к _MSDeployDirPath
.
Но вы можете упростить отображаемый путь, заменив свойство _PackageTempDir
путем, который вы хотите отобразить для вашего клиента. (Этот путь будет использоваться как временный каталог для создания пакета)
Вы можете переопределить свойство:
В командной строке:
msbuild.exe projectfile.csproj / t: Package / p: _PackageTempDir = C :\Упаковка
Или прямо в файле проекта:
<_PackageTempDir> C: \ Package