在 Visual Studio 中,当我们发布到一个文件夹时,该文件夹包含我们需要部署的内容。
在 Azure Pipeline 中,Build Solution 任务会生成一堆(对我们来说)不必要的文件和一个 zip 文件(很好!)。zip 包含我们需要的文件,但隐藏在一个疯狂的深文件夹路径中:
\Content\D_C\a\1\s\src\MyProject\obj\Release\Package\PackageTmp\our-files.dll
Run Code Online (Sandbox Code Playgroud)
我们更喜欢的是:
\our-files.dll
Run Code Online (Sandbox Code Playgroud)
它还修改 web.config 中的 connectionStrings 以支持它附带的部署脚本。我们不需要那个脚本,而且修改很麻烦(我们通过添加<AutoParameterizationWebConfigConnectionStrings>false</...>到 .csproj 文件来禁用它- 哎呀!)`。
我们尝试在 Build Solution 步骤中对参数大惊小怪:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
Run Code Online (Sandbox Code Playgroud)
更改DeployOnBuild为false导致 $(build.artifactsstagingdirectory) 为空(导致下一步不部署任何内容)
更改WebPublishMethod为FileSystem没有区别(尝试查找有关允许值的文档!)
更改PackageAsSingleFile为false做人们所期望的 - 没有 zip,但内容仍然隐藏在那个深层文件夹结构中。
我们的下游脚本可以打开清单文件,将深度路径 xpath 导出到 zip 中(路径是否总是以开头d_C?),解压缩并从那里获取内容 - 但这是多么痛苦和多么不必要。
有没有办法只发布一个很好的干净构建 - 一个 zip 的内容可以直接解压缩到与 Visual Studio 中的纯简发布相同的文件?
如果我想访问RDBMS特有的功能怎么办?有没有办法将数据库特定的SQL注入到EF生成的SQL中?
例如,在Oracle 12c中,您可以为DDL和DML添加时间有效性(有很多种类;我将仅使用这里的简单示例):
这可以在C#中很好地建模:
[TemporalAxis("valid_time")]
public class SomeEntity
{
public string SomeField { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后与LINQ一起使用
var results = context.SomeEntities
.Where(i => i.SomeField = "some_value")
.AsOfPeriodFor("valid_time", dateVariable);
Run Code Online (Sandbox Code Playgroud)
该.AsOfPeriodFor扩展可以是这样的:
public static class TemporalExtensions
{
public static IEnumerable<TSource> AsOfPeriodFor<TSource>(this IEnumerable<TSource> source,
string temporalAxis, DateTime asOfDate)
{
// reflect on TSource to ensure it has the correct attribute/value (else degrade/throw)
// do something to source that sets up EF to add the extra clause in the DML
return source; …Run Code Online (Sandbox Code Playgroud) 我有一个堆积条形图,由布尔字段分割。这会导致图例以两种颜色显示(酷!),但图例具有以下值:true 和 false。对于读者来说,没有上下文说明什么是正确的,什么是错误的。
在本例中,字段名称为is_active。
至少让字段名称出现在图例中将有助于人们阅读和理解图表。
更好:有没有办法分别用“Active”和“Inactive”替换“true”和“false”?
我尝试了这个高级->JSON 输入:
{
"script": {
"inline": "doc['is_active'].value ? 'Active' : 'Inactive'",
"lang": "painless"
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致错误“String无法转换为java.lang.Number”。如果我用数字替换 JSON 输入中的字符串,数字确实会出现在图例中。但没有帮助。
我们创建了一个包含许多项目模板的VSIX.在每个模板中,.vstemplate引用图标图像文件,如下所示:
<Icon>TemplateIcon.png</Icon>
Run Code Online (Sandbox Code Playgroud)
以下是此类PNG的示例:
我直接从模板项目拖动这三个图像 - 将编译到VSIX中的相同文件.
这里很难说,但左上角和右下角是透明的,蓝色的内部是白色的.
当我编译VSIX时,所有模板都已正确安装,它们都可以正常工作.但是,"新建项目"对话框中的图标不同:
透明的角落看起来很好,但是内部的白色变成了黑色,而第三个图标显得缩小了.
我尝试过GIF和ICO格式无济于事(GIF版本没有收缩,但确实用黑色取代了白色).此外,上面的图像是64x64.我尝试使用32x32(对话框中图标的实际大小).得到了相同的结果.
你能帮我把图像按照预期的方式进入新项目对话框吗?