Пакеты Nuget работают в соответствии с соглашением: http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory
Что касается exe и config, вы можете сделать следующее:
- В вашем каталоге пакетов сделайте следующие каталоги
- mkdir lib (для exe)
- mkdir content (для конфига)
Все, что вам нужно сделать для exeпоместите файл в каталог lib и измените ваш файл .nuspec прямо под узлом метаданных.Должен быть узел «файлы» (если вы не можете его добавить).Добавьте что-то вроде этого в файловый узел:
<file src="content\my.exe" target="content\my.exe" />
Конфигурация немного отличается.Просто добавьте файл с именем myname.config.transform в каталог содержимого и добавьте запись в файл .nuspec:
Несколько замечаний:
- Если файл конфигурациине существует в вашем приложении, он добавит один для вас.
- Вам нужно добавить только те узлы, которые вы хотите преобразовать, если уже существует файл, который существует
- Файл преобразования выполнит полное сопоставление на вашем узле, поэтому, если в * 1028 существует следующее
ваш файл конфигурации:
<add key="test" value="myval"/>
И в вашем преобразовании вы получили:
<add key="test" value="myval2"/>
Полученный файл будет выглядеть так:
<add key="test" value="myval"/>
<add key="test" value="myval2"/>
Что касается добавления задачи запуска, это было немного сложнее для меня (может быть, гораздо лучший способ).Я использую powershell в install.ps1 (как и файлы выше, но вы создаете для него каталог «tools»):
param($installPath, $toolsPath, $package, $project)
#Modify the service config - adding a new Startup task
$svcConfigFile = $DTE.Solution.Projects|Select-Object -Expand ProjectItems|Where-Object{$_.Name -eq 'ServiceDefinition.csdef'}
$ServiceDefinitionConfig = $svcConfigFile.Properties.Item("FullPath").Value
[xml] $xml = gc $ServiceDefinitionConfig
#Create startup and task nodes
# So that you dont get the blank ns in your node
$startupNode = $xml.CreateElement('Startup','http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition')
$taskNode = $xml.CreateElement('Task','http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition')
$taskNode.SetAttribute('commandLine','my.exe')
$taskNode.SetAttribute('executionContext','elevated')
$taskNode.SetAttribute('taskType','simple')
$startupNode.AppendChild($taskNode)
#Check to see if the startup node exists
$modified = $xml.ServiceDefinition.WebRole.StartUp
if($modified -eq $null){
$modified = $xml.ServiceDefinition.WebRole
$modified.PrependChild($startupNode)
}
else{
$nodeExists = $false
foreach ($i in $xml.ServiceDefinition.WebRole.Startup.Task){
if ($i.commandLine -eq 'my.exe'){
$nodeExists = $true
}
}
if($taskNode -eq $null -and !$nodeExists){
$modified.AppendChild($taskNode)
}
}
$xml.Save($ServiceDefinitionConfig);
Надеюсь, это поможет.
- Ник