小编Sco*_*ham的帖子

如何管理生成静态库和DLL的构建库项目?

我有一个大型的视觉工作室解决方案,有大约50个项目.有StaticDebug,StaticRelease,Debug和Release的配置.dll和static lib形式都需要一些库.为了获得它们,我们使用不同的配置重建解决方案.Configuration Manager窗口用于设置需要构建哪些项目的风格,静态库,动态DLL或两者.

这可能非常难以管理,并且必须多次构建解决方案并按正确顺序选择配置有点烦人.静态版本需要在非静态版本之前构建.

我想知道,如果对于我需要生成静态lib和dynamc dll的项目,我创建了两个项目,而不是当前的方案,可能更容易管理.例如:

  • corelib的
  • CoreDll

我可以让这两个项目引用所有相同的文件并构建它们两次,或者我想知道,是否可以构建CoreLib然后让CoreDll链接它以生成DLL?

我想我的问题是,您对如何在这种情况下构建项目有任何建议吗?

谢谢.

c++ dll visual-studio

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

如何取消同步 WinHttp 请求?

WinHttpSendRequest我的服务有一个线程,当有人试图停止我的服务时,该线程可能正在执行。

WinHttpCloseHandle 文档说:

HINTERNET应用程序可以通过关闭请求句柄来终止正在进行的同步或异步请求WinHttpCloseHandle

但是,后来相同的文档似乎与此相矛盾。它说:

应用程序永远不应该WinHttpCloseHandle调用同步请求。这可能会产生竞争条件。

我发现这篇博客文章似乎同意我不能打电话WinHttpCloseHandle

我想知道如何取消此操作以便我的服务可以正常停止?我真的不能等待WinHttpSendRequest自然超时,因为它花费的时间太长,而且我的服务停止得不够快。我认为 Windows 将此报告为错误,然后在关闭时强制终止该服务。

一个想法将不胜感激。

winapi winhttp

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

C# MsTest 项目可以转换为 Microsoft.NET.Sdk 项目格式吗?

我有一个针对 net48 的 C# MsTest 项目。我已将其测试的项目更改为更新样式的 Microsoft.NET.Sdk csproj 格式,一切顺利。现在我也想转换单元测试项目。

我收到有关无法找到命名空间 Microsoft.VisualStudio.TestTools.UnitTesting 的错误:error CS0234: The type or namespace name 'VisualStudio' does not exist in the namespace 'Microsoft'

为了解决这个问题,我添加了对 csproj 的程序集引用:

  <ItemGroup>
    <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息,无法找到它。 warning MSB3245: Could not resolve this reference. Could not locate the assembly "Microsoft.VisualStudio.QualityTools.UnitTestFramework". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

当使用旧的 csproj 格式时,发现这是可以的。

我怎样才能找到这个程序集引用,或者完成这项工作的首选方法是什么?

c# unit-testing visual-studio

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

为什么System.Web.Hosting.ApplicationHost.CreateApplicationHost会抛出System.IO.FileNotFoundException?

我看到了一些需要让程序集可用于传递给函数的第一个参数的类型.我想是的,我无法弄清楚我错过了什么.

此代码在服务中.我在"NETWORK SERVICES"用户帐户下运行该服务,当我将帐户更改为我登录的会话时,它运行正常.但是,有什么区别,我如何让它为NETWORK SERVICES用户工作.

c#

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

为什么私钥不能在本地计算机上逐字存储或以纯文本形式存储?

我正在读这个:

http://msdn.microsoft.com/en-us/library/tswxhw92(VS.80).aspx

第一句话说:"不应该在本地计算机上逐字或以纯文本形式存储非对称私钥."

这有什么问题?密钥容器如何解决它.

我问的原因是我想生成一个非对称密钥对.我正在编写的应用程序将使用公钥加密它发回给我的信息.我想在我们的源代码管理系统中存储公钥/私钥对,以便备份它.我不应该这样做吗?如果没有,我应该如何存储私钥以便可靠地备份?

谢谢.斯科特

更新:引用句中的'never'真的意味着永远不会.或者它是否意味着我不应该将密钥存储到源代码控制中,除非我不准备承担黑客可能从源代码管理系统或从其获取的备份中检索密钥的风险.

encryption key-management

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

TFS显示状态为"merge"的挂起更改.如果我检查这些,是否会更改任何文件?

我在TFS中合并文件.这有点棘手,因为目标中的某些文件已被移动或删除.

在执行合并和解决冲突之后,TFS显示许多状态为"merge"的挂起更改.

如果我检查这些,是否会更改任何文件?

我想如果我检查显示的挂起更改(在更改列中)状态为"合并",这只会更新TFS中的合并记录,这样如果我重复合并,它将不会尝试重新合并这些文件,除非他们已经改变.这是正确的吗?我不想检查这个伟大的文件列表,最后更改文件的内容/名称/删除状态.

tfs

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

如何使用msbuild选择所有只读文件?

我正在尝试编写一个MsBuild脚本来压缩一些文件.我需要从文件夹中递归选择所有只读文件到ItemGroup以添加到zip.

我正在使用社区任务Zip任务,但我正在努力根据其属性选择文件.

是否有任何东西可以开箱即用,或者我是否需要编写自定义任务?

谢谢你的帮助.

msbuild

5
推荐指数
2
解决办法
1176
查看次数

你如何过滤ItemGroup?

我正在尝试从另一个创建过滤的项目组,其中过滤的项目组将仅包含来自第一个组的具有指定文件扩展名的项目.

我收到以下错误:

错误MSB4190:在这种情况下,''(扩展名)'=='.sys'"不允许在位置1引用内置元数据"扩展".

当我运行这个:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         DefaultTargets="Go"
         ToolsVersion="4.0">

  <ItemGroup>
    <Files Include="X.exe"/>
    <Files Include="Y.sys"/>
  </ItemGroup>

  <ItemGroup>
    <SysFiles Include="%(Files.Identity)" Condition="'%(Extension)'=='.sys'">
    </SysFiles>
  </ItemGroup>

  <Target Name="Go">
    <Message Text="SysFiles=@(SysFiles)"/>
  </Target>

</Project>
Run Code Online (Sandbox Code Playgroud)

首先,我无法理解为什么这个位置不允许使用元数据?它是msbuild的一些人为限制或未实现的部分吗?

其次,实现这种转变的简洁方法是什么?

非常感谢.

msbuild

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

c#中如何有条件地转换为多种类型

我正在查看具有此模式的函数:

if( obj is SpecificClass1 )
{
   ((SpecificClass1)obj).SomeMethod1();
}
else if( obj is SpecificClass2 )
{
   ((SpecificClass2)obj).SomeMethod2();
}
else if( obj is SpecificClass3 )
{
   ((SpecificClass3)obj).SomeMethod3();
}
Run Code Online (Sandbox Code Playgroud)

并得到代码分析警告:CA1800 不要进行不必要的转换。

我可以用什么好的代码模式来替换这段代码,这样既高效又简洁。

更新

我没说,但是obj是用object类型声明的。

我最初在这里问了两个问题。我已经拆分了一个(无论如何还没有人回答):为什么编译器不将这两个转换优化为一个?

c# type-conversion

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

双重签名 .cat 文件有错误“主题中不存在签名”

我正在使用从赛门铁克购买的证书对驱动程序的 windows .sys 和 .cat 文件进行双重签名,并使用以下命令行(sys 和 cat 文件都使用相同的选项签名):

signtool.exe sign /v /ph /n "MyCorp" /ac "C:\Signing\VeriSign Class 3 Public Primary Certification Authority - G5.cer" /i "VeriSign Class 3 Code Signing 2010 CA" /t "http://timestamp.verisign.com/scripts/timstamp.dll" "MyDriver.cat"

signtool.exe sign /v /ph /n "MyCorp" /ac "C:\Signing\VeriSign Class 3 Public Primary Certification Authority - G5.cer" /i "Symantec Class 3 SHA256 Code Signing CA" /tr "http://timestamp.geotrust.com/tsa" /as /fd sha256 /td sha256 "MyDriver.cat"

Signtool.exe 在退出时报告成功。当我通过右键单击签名文件查看签名时,选择属性,转到数字签名选项卡,然后我看到两个签名。sha1 签名看起来不错。当我查看 .sys 文件上的 sha256 证书的详细信息时,一切看起来都不错。但是,当我查看 .cat 文件上的 sha256 证书的详细信息时,我看到以下错误:

在此处输入图片说明

驱动程序不会安装在我配置为相信 …

windows driver code-signing sha256

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