小编Ger*_*ino的帖子

让 NuGet 寻找满足通配符的更新包

使用 SDK 样式的 csproj。

设想:

项目:

<PackageReference Include="MyNamespace.Package" Version="3.5.4-*" />
<PackageReference Include="MyNamespace.Other" Version="3.5.3" />
Run Code Online (Sandbox Code Playgroud)

安装:

MyNamespace.Package 3.5.4-pre.1
MyNamespace.Other 3.5.3
Run Code Online (Sandbox Code Playgroud)

在 NuGet 存储库中:

MyNamespace.Package 3.5.4-pre.1
MyNamespace.Package 3.5.4-pre.2
MyNamespace.Other 3.5.3
MyNamespace.Other 3.5.4
MyNamespace.Other 3.6.0
Run Code Online (Sandbox Code Playgroud)

希望 NuGet 修改任何PackageReference条目。我确实希望 NuGet 安装MyNamespace.Package满足通配符的最新版本,此处为 3.5.4-pre.2.

有没有任何内置的方法可以实现这一目标?

.net csproj nuget nuget-package-restore

9
推荐指数
1
解决办法
4164
查看次数

在向用户显示页面之前拦截和修改DOM

我正在尝试创建一个Firefox插件(使用插件SDK)来修改页面的显示方式,主要是作为培训/学习练习.

对于某些任务(如增加具有新功能的页面)使用pageMod完全没问题.页面加载,我运行一些JS来显示/隐藏/添加元素.

我的问题是:我可以在页面开始显示之前对DOM执行修改(所以:服务器返回的HTML文档)吗?

例如:从服务器返回的页面是:

<html>
    <body>
        <table>
            <tr>
                <td>Item 1.1</td>
                <td>Item 1.2</td>
                <td>Item 1.3</td>
            </tr>
            <tr>
                <td>Item 2.1</td>
                <td>Item 2.2</td>
                <td>Item 2.3</td>
            </tr>
        </table>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但我希望FF代替:

<html>
    <body>
        <ul>
            <li>Item 1.1, Item 1.2, Item 1.3</li>
            <li>Item 2.1, Item 2.2, Item 2.3</li>
        </ul>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在页面加载后执行此操作将首先显示表格,然后它将快速"闪烁"到列表中.它可能足够快,但如果我要更改<img>标签<a>,例如防止(不想要)图像加载,这是不够的.

我正在寻找contentScriptWhen: "start"在pageMod 中使用并尝试附加监听器,但我无法看到我如何实时修改DOM'(或事件阻止在加载所有页面之前显示任何类型的页面).

我已经检查了cloud-to-butt扩展,因为它确实修改了页面,但我甚至无法让它工作:当作为pageMod附加start代码失败时:

 document.getElementById('appcontent').addEventListener('DOMContentLoaded', function(e)
Run Code Online (Sandbox Code Playgroud)

因为document.getElementById('appcontent')返回null.

我非常感谢一些指示:是否可能,如何附加脚本,如何拦截HTML并在经过一些修改后将其发送回去.

编辑:好的,所以我认为我能够拦截数据:

let { Ci,Cr,CC } = require('chrome');
let { on } = …
Run Code Online (Sandbox Code Playgroud)

javascript mozilla firefox-addon firefox-addon-sdk

7
推荐指数
1
解决办法
7801
查看次数

无约束类型参数铸造

我的情况:

interface ISomeInterface {
    void DoSmth<T>(T other);
}

class Base : ISomeInterface
{
    public virtual void DoSmth<T>(T other){
        // for example do nothing
    }
}

class Derived<T2> : Base {
    Action<T2> MyAction {get;set;}

    public override void DoSmth<T>(T other){
        if(typeof(T2).IsAssignableFrom(typeof(T)))
            MyAction((T2) other);
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:( Cannot cast expression of type 'T' to type 'T2'Cannot convert type 'T' to 'T2')

我明白这是因为T或T2都没有受到限制class,但如果我知道 - 由于IsAssignableFrom- 我可以使用T我需要T2,我怎么能说服编译器允许它?

.net c# types casting

6
推荐指数
1
解决办法
172
查看次数