C# WixSharp包括appsettings,不考虑谓词
我正在使用WixSharp构建我的安装程序。在我的项目中,我有:C# WixSharp包括appsettings,不考虑谓词,c#,predicate,wixsharp,C#,Predicate,Wixsharp,我正在使用WixSharp构建我的安装程序。在我的项目中,我有: new Files( new Feature("RootFilesFeature"), Path.Combine(C_SERVICE_RELEASE_PATH,"*.*"), (lFilename) => !lFilename.StartsWith("appsettings", true) ) 不管该谓词如何,我仍然安装了appsettin
new Files(
new Feature("RootFilesFeature"),
Path.Combine(C_SERVICE_RELEASE_PATH,"*.*"),
(lFilename) => !lFilename.StartsWith("appsettings", true)
)
不管该谓词如何,我仍然安装了appsettings.json和appsettings.development.json
我做错了什么?我想这是因为
lFilename
是包含路径的文件名。
如果您的情况可能,请使用Contains
new Files(
new Feature("RootFilesFeature"),
Path.Combine(C_SERVICE_RELEASE_PATH,"*.*"),
(lFilename) => !lFilename.Contains("appsettings")
)
或EndsWith
new Files(new Feature("RootFilesFeature"),
Path.Combine(C_SERVICE_RELEASE_PATH, "*.*"),
(lFilename) => !lFilename.EndsWith("appsettings.json", true) ||
!lFilename.EndsWith("appsettings.development.json", true)
)
如果要同时排除“appsettings.json”和“appsettings.development.json”,则必须在它们之间放置&&而不是||
new Files(new Feature("RootFilesFeature"),
Path.Combine(C_SERVICE_RELEASE_PATH, "*.*"),
(lFilename) => !lFilename.EndsWith("appsettings.json", true) &&
!lFilename.EndsWith("appsettings.development.json", true)
)
因此,您的代码并没有按原样工作(我仍然需要该路径),但您是对的;文件名不仅是文件名,而且是整个路径。当我将谓词更改为contains时,它起了作用。