2013-07-19 4 views
1

У меня есть приложение C# ClickOnce, которое нужно публиковать несколько раз для OEM-целей.Каков наилучший способ публикации нескольких версий одного и того же приложения ClickOnce?

Теперь я понимаю, что параметры публикации находятся в файле .csproj. Однако это неудобно в случае, когда я хочу опубликовать несколько версий.

например, компания A требует совершенно разных значков, местоположения меню запуска, названия продукта и т. Д. От компании B, но сборки не нужно переименовывать.

Вот несколько подходов/вопросы, на которые я могу думать о том, чтобы решить эту проблему ...

1.Is есть способ создать отдельную публикацию файла настроек для использования во время сборки?

2.Can Я редактирую конкретные параметры публикации (например, расположение меню «Пуск» и т. Д.) Во время сборки с помощью MSBuild.exe? Я думаю, что это было бы идеально ... например.

MSBuild.exe project.sln/цель: Публикация/свойства: редактировать-проекта опубликуйте-настройки-вот

3.Maybe создать 2-й файл .csproj? (Предпочитаете не делать этого ...)

Пожалуйста, поделитесь своими мыслями относительно наилучшего подхода или любых других умных способов сделать это. Благодаря!

ответ

1

Если вы скопируете файл .csproj в папке проекта, он будет ссылаться на все одинаковые исходные файлы, и вы можете просто изменить имя исполняемого файла. Создайте другое решение VS, и вы можете ссылаться на скопированный .csproj и избавиться от первого, чтобы вы могли публиковать две отдельные версии.

Это не идеальное решение для ClickOnce.

Если вы используете объект Singleton, который указывает «режим» (компания A, B, C и т. Д.), Вы можете легко сохранить это в app.config (или другом файле xml). Затем просто повторно опубликуйте приложение ClickOnce, но скопируйте правильную версию своего файла конфигурации, чтобы он был отправлен вместе с сборкой. Таким образом, вам не нужны дополнительные csprojects Просто включите все свои значки и установите их во время выполнения в приложении Start на основе вашего объекта Singleton.

2

Я хотел бы дать вам некоторое блестящее решение, но лично я бы, вероятно, пойти с опцией 3.

Я имею в виду, его довольно просто, изменения должны быть довольно статичным, и это будет трудно (МОГ) в полностью привинтить его и развернуть неправильные изменения в неправильной компании.

1

Я обнаружил, что вы можете редактировать некоторые свойства, используя MSBuild.exe как этот

MSBuild Solution.sln/цель: опубликовать/свойства: ProductName = ProductA \; Издатель = CompanyA \; ApplicationIcon = companyA.ico

я нашел еще один полезный пост на modifying.csproj files programatically с .NET кода. (Это было бы необходимо, только если вы изменяете вещи, которые глубже, чем просто свойство проекта, указанное в документации ClickOnce ниже)

MSBuild documentation здесь тоже полезно - особенно в Публикация Свойство