直接问题:如果我有两个具有相同名称的文件(但在不同的目录中),似乎只有Visual Studio 2005可以透明地处理它?VS 2008和2010需要一堆调整?除了我的命名惯例,我做错了吗?
背景:
我正在开发C++统计库......我有两个文件夹:
/ Univariate
Normal.cpp
Normal.h
Beta.cpp
Beta.h
Adaptive.cpp
Adaptive.h
/ Multivariate
Normal.cpp
Normal.h
Beta.cpp
Beta.h
Adaptive.cpp
Adaptive.h
Run Code Online (Sandbox Code Playgroud)
我需要支持交叉编译 - 我使用g ++/make将这些相同的文件编译到Linux中的库中.他们工作得很好.
我一直在使用Visual Studio 2005而没有问题,但我需要升级到Visual Studio 2008或2010(目前在nVidia的nsight工具上流口水).但是,如果我将文件添加到具有相同名称的项目中(即使它们位于不同的目录中),我会遇到问题.我愿意改变我的命名惯例,但是我很好奇其他人是否遇到过这个问题并且找到了任何记录良好的解决方案?
我通过,如果我从2005年项目升级至2010年的项目,似乎VS 2010的事实进一步猛然一惊是能够正确地处理在不同目录中的两个名称相同的源文件; 但是,如果我删除其中一个重复文件,然后将其添加回项目,我会收到以下警告:
Distributions\Release\Adaptive.obj:警告LNK4042:指定了多次的对象; 临时演员被忽略了
现在我将中间目录指定为$(ProjectName)\ $(配置) - 我需要将我的目标文件放在与源代码树不同的位置.所以我可以看到为什么它将对象文件复制在一起,但是当项目从2005年转换到2008年或2010年时,会添加一堆条件编译:
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
Run Code Online (Sandbox Code Playgroud)
可以从C/C++ - >输出文件 - >"对象文件名"和"XML文档文件名"中的源文件属性页访问它们.但是,如果我只是直接添加文件(或删除并重新添加它们),VS在我尝试编译之前不会抱怨,但也从不添加条件指令 - 所以为了使事情正常工作,我必须为每个配置自己添加条件指令.我是犯了错误/不好的假设还是我在VS 2008/2010中发现了一个有效的错误?
c++ projects-and-solutions naming-conventions visual-studio-2010 visual-studio-2008
在VS2008之前,您可以在解决方案文件()中设置原生C++项目依赖项Project Dependencies ...,如果(默认情况下)设置链接器选项
Properties -> Linker -> General : Link Library Dependencies = Yes
Run Code Online (Sandbox Code Playgroud)
如果设置,Visual Studio Build将自动链接.lib到该项目所依赖的所有项目(DLL,LIB)的文件中将"静态"链接.
边注:微软改变了依赖关系是如何工作的 VS2010,现在你应该直接添加依赖到项目
Common Properties -> Framework and References : (List of depenencies)
(each lib/dll has a separate option:
Project Reference Properties -> Link Library Dependencies : True|False
Run Code Online (Sandbox Code Playgroud)
我很好.这不是这个问题的内容.
(这里有一个解释:灵活的项目到项目参考.)
它仍然可能然而定义的解决方案级项目的依赖性和General链接器选项也仍然存在.但它不起作用.看到:
linker dependencies projects-and-solutions visual-studio-2010 visual-c++
在Visual Studio 2008中,什么决定了项目在解决方案文件夹中的显示顺序?它不是字母顺序,也不是构建顺序.
我找不到任何改变项目列出顺序的方法.我已经尝试删除.suo文件,以及在.sln文件中移动.都没有任何影响.
如何更改项目的显示顺序?
我有一些类库,其中包含一些非常重要的现有代码.类库目前以.NET 4.0为目标.有关如何将这些库转换为可移植库的指导吗?从查看.csproj看,似乎没有太多差异:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)
和
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)
尝试将现有类库转换为可移植库是一个好主意还是坏主意?
我在一个Visual Studio(2008)解决方案中有多个项目.
我刚刚发现每个项目都使用相同的GUID,因此在解决方案文件中它看起来像这样:
Project("{FAE04EC0-F103-D311-BF4B-00C04FCBFE97}") = "Pro1", "Pro1\Pro1.csproj", "{...}"
Project("{FAE04EC0-F103-D311-BF4B-00C04FCBFE97}") = "Pro2", "Pro2\Pro2.csproj", "{...}"
Run Code Online (Sandbox Code Playgroud)
我是否必须更改这些GUID,以便它们是唯一的以及它们用于什么?
我使用Visual Studio内置的分析工具,现在每次检出任何文件时,此部分会自动添加到我的解决方案文件中:
GlobalSection(Performance) = preSolution
HasPerformanceSessions = true
EndGlobalSection
Run Code Online (Sandbox Code Playgroud)
我完全删除了所有分析报告,然后从此解决方案中删除了所有源代码控制文件的本地副本并更新到最新版本.任何结账后此部分仍在*.sln文件中.
其他未使用过prfiler的队友没有这个问题.有没有人有任何想法?
Visual Studio 2017在调试模式下中断并显示消息:
您的应用程序已进入中断状态,但没有要显示的代码,因为所有线程都在执行外部代码(通常是系统或框架代码).
消息在Break Mode Window.
该怎么办?
由于合并等问题,我们有许多项目文件不包含其文件夹中的所有源代码文件.
在我编写一个小工具之前,检查每个*.cs文件都包含在项目文件中,我希望确保之前没有其他人已经完成了.
(我们有近100个项目文件和1000个C#文件)
很明显,Visual Studio现在支持使用通配符来包含项目中给定目录中的所有"*.cs"文件,这是解决此问题的最佳方案.因此,当添加".cs"文件时,无需更新项目文件,重命名为ete.然而,只有在VS2017中才可以从UI中使用它.
我有一个包含Geos和Proj的项目.在Xcode 5之前,我使用LLVM GCC 4.2编译器编译它们,但在Xcode 5 DP中,我收到有关不支持的编译器的错误.选择另一个编译器获取编译错误取决于语法.我该如何解决这个问题呢?
根据手头的项目意识到这可能是主观的,我正在寻找构建VS(Visual Studio)解决方案的"最佳实践"方法.
请随意编辑此内容,评论您认为可能不正确的内容,建议替代方案等.我很高兴看到这个社区Wiki成为刚开始使用VS Solutions的人们的一个很好的资源.
以下是我现在为我工作的(在我目前的项目中),但是我知道有一些事情在错误的地方. 在我的场景中,我正在使用MVC 2构建Web应用程序
请发布您对终极解决方案结构的想法,以便我们了解"最佳方式"/"最佳实践"(无论这意味着什么)
IE:
你如何打破你的DAL(数据访问层)/ BLL(业务逻辑层)?
您是否将存储库层和服务层放在BLL中?如果您正在使用MVC(模型 - 视图 - 控制器),您是否将控制器保留在UI而不是Core中?
你在Utility/Miscellaneous文件夹中扔了很多东西,还是将它分开?
等等...
- MySolution
- MySolution.Core
- 认证
- 这是我有一个POCO和一个方法将poco searial到auth cookie的userData secion的地方
- 基础
- 这是我保留BaseController和BaseGlobal的地方
- 控制器
- 我的所有控制器(显然)
- 域
- DatabaseModels
- 包含我的L2S .dbml文件
- JsonModels
- 用于将JSON对象传递给视图的模型
- 库
- 服务
- 的ViewModels
- 扩展
- 所有扩展方法
- 过滤器
- 动作过滤器
- 公用事业
- 蜜蜂
- 所有第三方API代码都在这里
- 徽章
- 徽章计算在这里
- 的MailClient
- 使用此处的课程发送纯文本或HTML电子邮件
- RoutingHelpers
- 包含一个用于启用小写路由的类
- 还包含我不知道还放在哪里的东西... IE:HTMLSanitizer,自定义HtmlHelpers,UserInfo助手(IP地址,浏览器等),DataConverter等
- MySolution.UI
- App_Browsers文件
- 资产
- CSS
- 图片
- 脚本
- 查看
- Global.asax - 继承自BaseGlobal
- Web.config文件
屏幕截图


请随时发表评论,或者更好的是,在下面发布您自己的版本(答案).我知道我所得到的并不是最好的方式.
.net ×1
break ×1
c# ×1
c++ ×1
dependencies ×1
geos ×1
guid ×1
ios ×1
linker ×1
llvm-gcc ×1
portability ×1
profiling ×1
uuid ×1
visual-c++ ×1
xcode5 ×1