C# WixSharp包括appsettings,不考虑谓词

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

我正在使用WixSharp构建我的安装程序。在我的项目中,我有:

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时,它起了作用。