gpt4 book ai didi

Nuget Package Explorer - 有没有办法提示用户在包中的一个文件中为特定字段输入值

转载 作者:行者123 更新时间:2023-12-02 00:03:31 25 4
gpt4 key购买 nike

我创建了一个包,其中包含一个 web.config.transform 文件 - 即,在安装包时要添加到解决方案中现有 web.config 的部分 web.config。在这个 web.config.transform 中,我有(显示部分代码):

<add name="**NAME**-Local" connectionString="data source=**DB SERVER**;initial catalog=**DATABASE**;user id=**USER ID**;password=**PASSWORD**;" providerName="System.Data.SqlClient" />

当开发人员将此包添加到他们的解决方案(将上述代码行添加到连接字符串元素)时,每个应用程序中带有双星号的部分将有所不同。例如,开发人员 1 正在开发一个应用程序,其数据库服务器名为“WidgetsDb”。好的,所以“WidgetsDb”将替换双星号中的 DB SERVER。太好了,现在开发人员 2 正在开发一个使用名为“BicyclesDb”的数据库服务器的应用程序。因此,如您所见,这两个开发人员使用不同的数据库服务器。

我设想的解决方案是在安装 NuGet 包时弹出一个窗口,提示用户他们的数据库服务器名称、数据库名称、用户 ID 是什么、密码是什么等等。所有此数据将在上面的连接字符串中使用,您会在其中看到双星号。我希望我说得有道理。这可能吗?我知道您可以在包中引用不同的标记,例如 $rootnamespace$、$id$、$version$、$author$ 等。

最佳答案

我会使用 powershell 构建的表单来收集输入。这可以通过将 install.ps1 文件添加到您的包来实现,该文件将在安装包时运行。此代码示例大致是您创建表单并使其在安装包期间弹出所需的内容。 $databaseName.Text 将包含他们输入的任何内容。

param($installPath, $toolsPath, $package, $project)

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Data Entry Form"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$databaseName.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Please enter the database name in the space below:"
$objForm.Controls.Add($objLabel)

$databaseName = New-Object System.Windows.Forms.TextBox
$databaseName.Location = New-Object System.Drawing.Size(10,40)
$databaseName.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($databaseName)

$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

扩展此表单以捕获您需要的任何其他内容应该很容易。

关于Nuget Package Explorer - 有没有办法提示用户在包中的一个文件中为特定字段输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com