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コンテンツ(構成用)
exeに対して行う必要があるのは、ファイルをlibディレクトリにドロップし、メタデータノードのすぐ下にある.nuspecファイルを変更することだけです。「ファイル」ノードがあるはずです(そうでない場合は追加できます)。ファイルノード内に次のようなものを追加します。
<file src="content\my.exe" target="content\my.exe" />
設定は少し異なります。myname.config.transformという名前のファイルをコンテンツディレクトリに追加し、.nuspecファイルにエントリを追加するだけです。
注意すべき点がいくつかあります。
- 設定ファイルがアプリに存在しない場合は、設定ファイルが追加されます。
- すでに存在するファイルがある場合にのみ、変換するノードを追加する必要があります
- 変換ファイルはノード上で完全に一致するため、次のファイルが
設定ファイル:
<add key="test" value="myval"/>
そしてあなたの変身ではあなたは持っていました:
<add key="test" value="myval2"/>
結果のファイルは次のようになります。
<add key="test" value="myval"/>
<add key="test" value="myval2"/>
スタートアップタスクを追加する限り、それは私にとってもう少しトリッキーでした(はるかに良い方法があるかもしれません)。install.ps1でPowerShellを使用します(上記のファイルと同じですが、「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);
これがお役に立てば幸いです。
-ニック