小编Nik*_*cke的帖子

如何在Visual Studio 2017中向nuget包添加其他文件

我最近搬到了Visual Studio 2017Community Edition.它有2个不错的新功能

  1. 您不需要在csproj中明确包含源文件,它会自动执行此操作,
  2. 它可以直接构建nuget包.

我想将我的开源CodeFirstWebFrameworkDLL打包为nuget包.除了包括之外DLL,包还必须包含其他文件的整个目录树(包括.js,.tmpl,.css和.md文件).

我怎么知道Visual Studio我希望包中包含这个目录树?

从我通过广泛搜索找到的信息,并忽略了涉及将文件添加到csproj的所有过时信息,我所能找到的只是将它们放在一个contentFiles文件夹中,但这似乎不起作用.

我的项目文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net45</TargetFramework>
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
    <Authors>Nikki Locke</Authors>
    <Company>Trumphurst Ltd</Company>
    <Description>Easy to use web server for building web apps that use sql databases generated from c# classes</Description>
    <Copyright>2017 Trumphurst Ltd.</Copyright>
    <PackageProjectUrl>https://github.com/nikkilocke/CodeFirstWebFramework</PackageProjectUrl>
    <RepositoryUrl>https://github.com/nikkilocke/CodeFirstWebFramework</RepositoryUrl>
    <RepositoryType>Github</RepositoryType>
    <PackageTags>C# SQL Code First Web Server</PackageTags>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Markdig" Version="0.12.1" />
    <PackageReference Include="Mono.Data.Sqlite.Portable" Version="1.0.3.5" />
    <PackageReference Include="mustache-sharp" Version="0.2.10" />
    <PackageReference Include="MySql.Data" Version="6.9.9" />
    <PackageReference Include="Newtonsoft.Json" Version="10.0.2" …
Run Code Online (Sandbox Code Playgroud)

c# nuget-package visual-studio-2017

21
推荐指数
2
解决办法
7312
查看次数

如何在不导入的情况下创建与SslStream AuthenticateAsServer一起使用的证书

我迷失在迷宫般的证书和私钥中.

我正在用C#编写服务器.我希望它接受SSL连接.出于测试目的,我想为"localhost"生成证书,并将该证书用于服务器.理想情况下,我不想污染我的证书存储区,因此我只想要一个C#代码可以加载以提供证书的磁盘上的文件或文件.

我尝试的所有内容(使用网络搜索建议的菜谱方法)或者给我"提供给包的凭据无法识别"或"服务器模式SSL必须使用带有相关私钥的证书".

有没有办法生成证书和私钥,然后将它们加载到X509Certificate对象而不将它们加载到我的机器证书存储中?

c# ssl x509certificate

11
推荐指数
2
解决办法
8833
查看次数

如何在极简X环境中运行Firefox全屏

我希望建立一个通常称为Kiosk的东西,将Firefox锁定到我们自己的特定主页(以及那里的链接).基本操作系统是CentOs 5(就像RedHat Enterprise 5一样).

理想情况下,我希望Firefox能够全屏启动(我已经安装了全屏幕插件来帮助解决这个问题),并且要锁定(例如F11不起作用).

我需要能够使用一个或多个rpm文件安装此系统.

我已经在Gnome下测试了我的全屏Firefox设置rpm,它运行正常 - 我的Gnome桌面是1024x768,所选主页正好填满了屏幕 - 看起来很棒.

但是,我不想打扰桌面环境(如Gnome或KDE),只需将Firefox作为唯一的X客户端程序运行,固定屏幕大小为1024x768.

我已经构建了rpms来安装X,将其配置为以1024x768运行,并使用shell脚本从自动登录中自动启动X.

我的主要自动记录脚本包含:

startx ~/client/xClient.sh  -- :1 &
Run Code Online (Sandbox Code Playgroud)

xClient.sh包含:

while [ true ]
do
    firefox
done
Run Code Online (Sandbox Code Playgroud)

我的问题是Firefox在此设置下没有全屏显示.firefox窗口小于屏幕,左上角不在屏幕上 - 这意味着网页获取滚动条,页面的顶部和左侧不显示,并且底部和右侧有一个黑色区域.

有谁知道这种行为的原因?

你能建议什么解决方案?

我想,如果有必要,我可以在机器上安装Gnome,然后尝试将其锁定 - 但添加像Gnome这样复杂的东西似乎很愚蠢,只是为了让窗口看起来正确,并且在正确的位置!另外还有一个额外的任务是尝试锁定Gnome,这样用户就无法对机器进行任何其他操作.

如果你认为这个问题不应该在Stack Overflow上,请告诉我它应该去哪里.(我认为编写rpm和shell脚本是编程,但也许它们不算数?如果没有,抱歉!)

x11 firefox centos5 kiosk

10
推荐指数
2
解决办法
2万
查看次数

如何在IE8中模拟最小宽度

IE8文档说它支持min-width,但它似乎对我不起作用.

我想成为最小宽度的html是在表格单元格中.

我在这里看到另一个问题,建议在每个单元格中添加1像素高度div,并设置宽度,但这不起作用 - 由于某种原因,IE将其渲染为18像素高.

这是html代码:

<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<style type="text/css">
table.keyboard div.key {
    height: 50px;
    font-size:50px;
    border: 5px outset gray;
    min-width: 60px;
    text-align: center;
}
table.keyboard div.spc {
    height: 1px;
    width: 60px;
    background-color: green;
}

table.keyboard td:hover {
    background-color: lightblue;
}
table.keyboard {
    border: 3px inset blue;
}
</style>
</head>
<body>
<div id="body">
<div>Here is some stuff</div>
<table class='keyboard'>
    <tbody>
        <tr>
            <td><div class='key'>1</div><div class='spc'></div></td>
            <td><div class='key'>2</div><div class='spc'></div></td>
            <td><div class='key'>3</div><div class='spc'></div></td>
            <td><div class='key'>4</div><div class='spc'></div></td>
            <td><div class='key'>5</div><div class='spc'></div></td>
        </tr> …
Run Code Online (Sandbox Code Playgroud)

css internet-explorer-8

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

如何使用Visual Studio 2017创建Nuget包

我正在构建一个.net 4.5类库dll Visual Studio 2017.

我希望打包这个dll,以及一些相关的javascript,html,css等文件夹作为NuGet包.

不幸的是,我不知道从哪里开始 - 我可以找到创建NuGet包的唯一指令适用于Visual Studio 2015.我被告知NuGet包括在内Visual Studio 2017,但如果我打开一个Developer Command Prompt for VS 2017,并输入Nuget,则找不到该命令.

我得到的印象是Visual Studio 2017可以NuGet在.Net标准项目中构建软件包,但不能在其他类型的项目中构建软件包.

我应该回去Visual Studio 2015,还是什么?

nuget visual-studio-2017

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

为什么我签名的点击一次应用程序说它有一个未知的发布者

我想创建一个易于安装的应用程序.安装过程非常复杂(许多权限,防火墙规则,服务等).所以我决定用C#(.net 4)编写安装程序,然后使安装程序本身安装一次点击.

想法是用户会去网站,点击安装,我的安装程序将通过点击一次安装在他们的计算机上,然后它将运行,设置主程序.

为了使这个过程变得简单,我显然必须签署所有可执行文件.我购买了一份Comodo代码签名证书,将其安装在我的证书商店中,并在VS Express 2012中勾选了"签署一次点击清单".我还包括一个运行后的构建步骤

SIGNTOOL.EXE sign /f TrumphurstCodeCertificate.pfx /p <my password> TimeClockSetup.exe
Run Code Online (Sandbox Code Playgroud)

我清理了构建文件夹和部署网站中的所有内容,并运行了一个干净的构建.

我检查了build文件夹中可执行文件的属性,它显示为我发布的.

我将该程序发布到该网站,启动了另一台Windows 8计算机,导航到该网站,然后单击"安装"按钮.

我被提示Do you want to run or save setup.exe,并选择运行.

然后我被提示setup.exe is not commonly downloaded and could harm your computer- 我点击了动作,它说This program might harm your computer.它确实说出版商是特朗普赫斯特有限公司,并且给了我选项,无论如何,我点击了它.

然后我得到了"Open File - Security Warning", for ".....\TimeClockSetup.exe", "Publisher: Unknown Publisher".

exe如何显示Unknown publisher

我浏览了安装它的用户数据目录中的exe,并且在Properties对话框中没有显示"Digital Signatures"选项卡.

但是,如果我浏览到我的构建文件夹中的exe,它有一个签名.

[稍后]我记得在某处读取构建或发布过程的某些部分使用obj文件夹中的exe文件而不是构建输出文件夹中的文件,所以我添加了签名到post构建步骤 - 它没有区别.

c# code-signing one-click-web-publishing

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

将所有小数的默认MongoDb/Bson表示设置为double

我正在帮助编写一个C#应用程序来分析财务数据.在内部所有数字都存储为十进制,但是当我们将它们保存到我们的mongodb数据库时,我们希望它们存储为双精度数而不是字符串.我知道我可以通过将[BsonRepresentation(BsonType.Double)]属性应用于每个十进制字段来为单个字段执行此操作,但在添加新的十进制值时我会忘记.

有没有办法使这个成为所有十进制数的默认表示?

c# mongodb bson mongodb-.net-driver

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

如何用C#(或VB.NET)编写WinMerge插件

我想编写一个WinMerge插件来将SQLite数据库转换为文本,因此我可以使用WinMerge来比较数据库.

我已用C#编写代码来进行转换,但我似乎无法将其显示为WinMerge插件.但是我对编写COM可见的.NET对象并不是很熟悉.

我想我不能放入正确的COM属性(我只是把ComVisible(true)放在类上).但是,我认为VB.Net应该为你做所有的事情,所以我在VB.Net中重写了类,使用Project/Add New/COM类.但是,它仍然不会作为加载的插件出现在WinMerge中.

无奈之下,我尝试使用DLL导出查看器查看VB DLL,但它没有显示任何导出的函数.我显然做错了什么.

这是完整的代码:

<ComClass(WinMergeScript.ClassId, WinMergeScript.InterfaceId, WinMergeScript.EventsId)> _
Public Class WinMergeScript

#Region "COM GUIDs"
    ' These  GUIDs provide the COM identity for this class 
    ' and its COM interfaces. If you change them, existing 
    ' clients will no longer be able to access the class.
    Public Const ClassId As String = "9b9bbe1c-7b20-4826-b12e-9062fc4549a0"
    Public Const InterfaceId As String = "b0f2aa59-b9d0-454a-8148-9715c83dbb71"
    Public Const EventsId As String = "8f4f9c82-6ba3-4c22-8814-995ca1050de6"
#End Region

    Dim _connection As SQLite.SQLiteConnection
    Dim _output As IO.TextWriter
    Dim …
Run Code Online (Sandbox Code Playgroud)

c# vb.net plugins winmerge

5
推荐指数
1
解决办法
2115
查看次数

如何使用C#代码授予用户启动和停止特定服务的权限

如何仅使用C#代码为特定用户(可能是NET SERVICE用户)授予启动和停止特定服务的权限.

我需要生成的代码来处理从Windows XP到Windows 8的所有内容.

[编辑]我已经有了一个有效的服务,以及一个设置文件夹权限,安装服务,启动它等的安装例程.

服务检查URL以查看是否有更新,如果有,则下载它,并启动更新程序以更新服务(并终止自身).

updater程序更新服务exe(和其他所需文件),并需要重新启动服务.

我从研究中了解到,可以为服务用户(在这种情况下为NETWORK SERVICE)提供启动和停止单个服务的权限,但我不知道api是否在代码中执行此操作.

c# permissions service

5
推荐指数
1
解决办法
2587
查看次数

发生了"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"类型的第一次机会异常

在Newtonsoft JObjects上使用dynamic时Microsoft.CSharp.RuntimeBinder.RuntimeBinderException,我的调试输出得到了很多.虽然异常必须被困在Microsoft.CSharp.dll中的某个地方,但它让我感到非常不舒服.有什么办法可以阻止他们(除了完全放弃动态)吗?

这是一个简短的测试程序,它输出以下一个例外:

    using System;
    using Newtonsoft.Json.Linq;

    namespace DynamicTest {
        class Program {
            static void Main(string[] args) {
                JObject j = new JObject();
                j["DocumentName"] = "Name";
                dynamic d = j;
                d.DocumentName = "Changed";
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# exception dynamic

4
推荐指数
1
解决办法
9965
查看次数

Android Asynchronous Http Client似乎永远不会回电话

我正在尝试编写一个使用com.loopj.android.http.AsyncHttpClient的Android应用程序.虽然几年前我写了一个Android应用程序,但我很生疏,所以请对我温柔!

在我的应用程序中,我做了一个get,并且没有调用任何回调虚拟方法.为了简化并确保它不是我的应用程序,我基于SDK附带的SupportAppNavigation项目创建了一个新项目.我修改了onCreate代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Log.i("com.trumphurst", "Creating AsyncHttpClient");
    AsyncHttpClient client = new AsyncHttpClient();
    client.setTimeout(5000);
    Log.i("com.trumphurst", "Getting www.google.com");
    client.get("http://www.google.com", new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(String response) {
            Log.i("com.trumphurst", "Success");
        }
        @Override
        public void onFailure(Throwable error, String content) {
            Log.i("com.trumphurst", "Failure");
        }
    });
    setListAdapter(new SampleAdapter(querySampleActivities()));
}
Run Code Online (Sandbox Code Playgroud)

(请注意,这是我对SDK附带的示例应用程序所做的唯一代码更改.)

我在调试器下启动了应用程序,并监视了logcat输出.我看到"Creating AsyncHttpClient"和"Getting www.google.com",然后什么也没看到.

我已经为清单添加了一些权限 - 它现在开始了:

<manifest android:versionCode="1"
    android:versionName="1"
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.support.appnavigation">

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<application android:label="@string/app_name">
    <activity android:name=".app.AppNavHomeActivity"
            android:label="@string/app_nav_home_label">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" …
Run Code Online (Sandbox Code Playgroud)

android asynchttpclient

0
推荐指数
1
解决办法
8525
查看次数