我的第一个问题是,我应该努力让编译器使用自动生成的 guid 吗?
我正在尝试使用 WiX 为网站创建安装程序。请原谅我的无知,这是我的第一个 WiX 项目。我正在关注这篇文章:
http://blog.bartdemeyer.be/2013/10/create-an-installer-for-website-with-wix-part-1/
该过程使用 msbuild 调用多个 WiX 工具以最终创建 MSI。该示例在调用 heat 时使用“Generate guids now”(“-gg”开关):
<Target Name="Harvest">
<!-- Harvest all content of published result -->
<Exec
Command='"$(WiX)bin\heat.exe" dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg MgrWebComponents -var var.publishDir -gg -out $(WebSiteContentCode)'
ContinueOnError="false"
WorkingDirectory="." />
</Target>
Run Code Online (Sandbox Code Playgroud)
我在别处阅读最佳做法是使用自动生成的 guid(-ag 开关)来确保正确安装产品更新。我注意到每次运行加热时 guid 都会发生变化。
<Fragment>
<ComponentGroup Id="MgrWebComponents">
<Component Id="cmp56294569B275493319100C26538BA16C" Directory="INSTALLFOLDER" Guid="{A43DA07B-C4CD-4FE0-AC09-EEA693AB2BA7}">
<File Id="fil93D55732EC03C2B809F21B9423BF5550" KeyPath="yes" Source="$(var.publishDir)\BrandImageService.ashx" />
</Component>
<Component Id="cmp6BD39B2D572EA73C29A81AE5D1C3F0C4" Directory="INSTALLFOLDER" Guid="{99B7B916-AEC0-4EE9-B17F-E7B325E93A4D}">
<File Id="filE861424851E26D456D43F5D1855B3E7B" KeyPath="yes" Source="$(var.publishDir)\Dashboard.aspx" />
</Component>
...
Run Code Online (Sandbox Code Playgroud)
如果我应该使用自动生成的 guid,我需要让编译器正常工作。我在编译时尝试使用自动生成的 guid …
我试图通过 WCF 传递一个带有 Dictionary 属性的类,对于一种方法失败,但对于另一种方法有效。当类在 a 内返回时List,它就起作用了。但是当类在 a 中返回时DataTable,客户端只是说连接已断开并且没有显示错误。
这是引起问题的类:
[DataContract]
public class DetailLog
{
[DataMember]
public string Name
{
get;
set;
}
[DataMember]
public string SubAction
{
get;
set;
}
[DataMember]
public Dictionary<string, string> Fields
{
get;
set;
}
[DataMember]
public string UserName
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
我开始创建一个没有问题的方法:
public List<DetailLog> GetDetailLog(List<int> IDs, List<int> actionTypeIds, List<int> userIds, DateTime beginDate, DateTime endDate)
Run Code Online (Sandbox Code Playgroud)
然后我们需要创建一些非常动态的报告,因此我使用了我们之前用于其他动态报告的数据表。
但我需要传递 DetailLog 类,因此我创建了该类型的 DataTable 列:
public DataTable GetCustomDetailReport(int CustomReportID, List<CustomReportFilter> reportFilters)
{
DataTable …Run Code Online (Sandbox Code Playgroud) 我正在尝试在ASP.NET Core 2.1项目中的帮助器类中访问HttpContext.Session对象。
当我尝试访问HttpContext.Session时,出现以下错误。
CS0120非静态字段,方法或属性'HttpContext.Session'需要对象引用
使用.NET 4.x ASP.NET,可以使用“ HttpContext.Current.Session”轻松访问它。
这是我的课:
public class MySession
{
public void Foo()
{
HttpContext.Session.SetString("Name", "The Doctor"); // will not work
HttpContext.Session.SetInt32("Age", 773); // will not work
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Startup.cs:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
// Set …Run Code Online (Sandbox Code Playgroud) 这是SQL数据库的安装程序.它确实不会更改本地计算机上的任何内容,但会连接到数据库以进行更改.
用户可以从一台计算机升级3个不同的数据库服务器,这样他们就可以使用相同的对话框运行3次.
我希望安装程序始终显示我设置的相同自定义对话框.我不希望它进入维护对话框.
我已将MajorUpgrade标记设置为如此,文档中说明了"AllowSameVersionUpgrades"
<MajorUpgrade AllowDowngrades="yes" />
Run Code Online (Sandbox Code Playgroud)
我尝试更改对话框"下一步"按钮.NewDBDlg是一个自定义屏幕.
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="NewDBDlg">1</Publish>
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="NewDBDlg">1</Publish>
Run Code Online (Sandbox Code Playgroud)
这样的工作,但它到达最后一个"VerifyReadyDlg"屏幕,它只是一个空白,只有一个"后退"和"取消"按钮.
我是朝着正确的方向前进还是应该尝试其他方法,例如在安装过程中删除安装?