我最近搬到了Visual Studio 2017Community Edition.它有2个不错的新功能
我想将我的开源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#编写服务器.我希望它接受SSL连接.出于测试目的,我想为"localhost"生成证书,并将该证书用于服务器.理想情况下,我不想污染我的证书存储区,因此我只想要一个C#代码可以加载以提供证书的磁盘上的文件或文件.
我尝试的所有内容(使用网络搜索建议的菜谱方法)或者给我"提供给包的凭据无法识别"或"服务器模式SSL必须使用带有相关私钥的证书".
有没有办法生成证书和私钥,然后将它们加载到X509Certificate对象而不将它们加载到我的机器证书存储中?
我希望建立一个通常称为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脚本是编程,但也许它们不算数?如果没有,抱歉!)
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) 我正在构建一个.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,还是什么?
我想创建一个易于安装的应用程序.安装过程非常复杂(许多权限,防火墙规则,服务等).所以我决定用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#应用程序来分析财务数据.在内部所有数字都存储为十进制,但是当我们将它们保存到我们的mongodb数据库时,我们希望它们存储为双精度数而不是字符串.我知道我可以通过将[BsonRepresentation(BsonType.Double)]属性应用于每个十进制字段来为单个字段执行此操作,但在添加新的十进制值时我会忘记.
有没有办法使这个成为所有十进制数的默认表示?
我想编写一个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#代码为特定用户(可能是NET SERVICE用户)授予启动和停止特定服务的权限.
我需要生成的代码来处理从Windows XP到Windows 8的所有内容.
[编辑]我已经有了一个有效的服务,以及一个设置文件夹权限,安装服务,启动它等的安装例程.
服务检查URL以查看是否有更新,如果有,则下载它,并启动更新程序以更新服务(并终止自身).
updater程序更新服务exe(和其他所需文件),并需要重新启动服务.
我从研究中了解到,可以为服务用户(在这种情况下为NETWORK SERVICE)提供启动和停止单个服务的权限,但我不知道api是否在代码中执行此操作.
在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) 我正在尝试编写一个使用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)