我有一个简单的C#控制台应用程序,它读入指定用户的XML文件,对其运行XSLT转换,并输出结果.
当我将我的应用程序分发给用户时,我想分发一个.EXE文件.我的源代码由3个文件组成:.csproj文件,.cs代码文件和.xslt样式表.
如何设置csproj以使.xslt在输出中"嵌入"并且最终用户无法查看或修改?
看起来很简单,但我无法弄清楚,谷歌并没有太大的用处.
我有一个相当复杂的应用程序,它已被分解为多个组件.每个组件都有一个包含大量项目的解决方案文件.所以我喜欢把它想象成一个组件中有多个项目/ dll.还有一个"共同"组件.所有其他组件都依赖于"共同".所以编译是这样的:
"nant component1.compile"将编译"common"然后编译component1,因为component1依赖于"common".随着时间的推移,"共同"变得相当大.我很确定它可以分成几个较小的组件.然后组件需要仅依赖于这些较小的,破碎的"共同"中的一些.这有望减少不同组件的编译时间.
所以问题:我想要显示应用程序中所有不同项目之间的依赖关系,同时标记项目所属的组件.你会怎么做?
在.csrpoj文件中,如果我有
<Compile Include="c:\path\File1.cs">
<Link>Dir1\File1.cs</Link>
</Compile>
Run Code Online (Sandbox Code Playgroud)
然后Visual Studio将该文件显示为Dir1解决方案资源管理器中文件夹下的快捷方式.
如果我有
<Compile Include="c:\path\*.cs"></Compile>
Run Code Online (Sandbox Code Playgroud)
然后,所有.cs文件在顶级解决方案资源管理器中显示为快捷方式:
有没有办法将所有文件包含在某个文件夹中然后显示在子文件夹下?省略Link元素中的文件名不起作用:
<Compile Include="c:\path\*.cs">
<Link>Dir1\</Link>
</Compile>
Run Code Online (Sandbox Code Playgroud)
文件仍显示在顶层.
如何将所有文件包含在文件夹中并仍然使用Link元素?我需要这个的原因是,我需要包含来自多个文件夹的文件,其中一些文件具有相同的名称.顶级的两个文件不能具有相同的名称.
有没有其他方法来实现这一目标
我是Visual Studio平台的新手.提前为问题中的任何愚蠢道歉.
我试图在我的csproj文件中使用appdata,只有当其他开发人员在调试模式下运行时才将许可文件复制到appdata.
这是我在csproj文件的after build部分尝试的内容:
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
<LicenseFile Include="..\..\..\..\utilities\FlexNet\Glass_Debug.lic"/>
</ItemGroup>
<Copy SourceFiles="@(LicenseFile)" DestinationFiles="@(LicenseFile->'$(%AppData%)\CompanyName\SeismicInterpretation\%(Filename)%(Extension)')" />
Run Code Online (Sandbox Code Playgroud)
我没有收到错误,项目构建和运行正常,除了它不会将许可证文件复制到我的appdata文件夹.
有任何想法吗?
检查项目文件(.csproj)并注意它创建了一个这样的节点:
<ItemGroup>
<Folder Include="NewFolder1\" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)现在删除Visual Studio中的文件夹并保存项目.
请注意,在项目文件中,有一个空节点,如下所示:
<ItemGroup/>
Run Code Online (Sandbox Code Playgroud)删除空节点似乎没有任何区别,那么为什么VS留下这个呢?
我为什么在意?因为这样的提交令人困惑:

经过大量搜索和跟踪面包屑之后,似乎要添加一个NON ASP.NET程序集作为对ASP.Net项目(不在同一解决方案中)的引用,必须使用DNU WRAP.
我尝试通过将CD写入解决方案目录并输入以下行来实现此目的
dnu -v wrap --configuration release -i code/access/access.csproj
Run Code Online (Sandbox Code Playgroud)
响应告诉我,我缺少NuGet包并"启用NuGet包恢复".我已经(并且已经重新检查)已经这样做了.
在互联网上搜索'dnu wrap'在GitHub上返回了2个点击,更有趣的是在解决方案级别需要global.json的dnu换行的侧面讨论.但是,我的一个ASP.Net解决方案没有global.json文件.
我的问题是1)在安装了VS 2015 RC的Windows系统上,让dnu wrap正常工作所需的步骤是什么?2)在什么条件下必须重做dnu包装?
我有一个标准的VSIX项目,它在同一个解决方案中依赖于类库项目.在将类库转换为新的VS2017RC简化版csproj之前,一切正常.类库构建正常(我的dotnet SDK是1.0.0-preview4-004233),但在尝试构建VSIX时我得到:
error MSB4057: The target "BuiltProjectOutputGroupDependencies" does not exist in the project.
Run Code Online (Sandbox Code Playgroud)
这显然与传统的VSIX csproj不兼容,期望新csproj无法提供的依赖项目.
有没有人碰到这个或有任何关于解决它的建议?我将研究删除项目引用并手动引用输出DLL.
作为一个相关的注释,目前还不清楚VSIX会从类库中选择哪个输出DLL,因为新的csproj支持多个目标框架.
我有一个旧的解决方案,我正在尝试使用其中的当前项目构建一个新的解决方案.其中一个项目是SQLUtils,它只包含.cs文件,而它的Target框架是.NET Framework 2.0.
在旧的解决方案中,它是一个常规的C#类库项目,但是当我将它添加到我的新解决方案时,它变成.sqlproj并且在构建它时出现错误.
我试着像旧的那样编辑新的.sln,但这没有任何区别.
但他们并没有完全解决它,你知道MSDN ...
其他信息:
解决方案文件:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "BO 25.7.17", "BO 25.7.17", "{5C12D821-9F39-4C47-A888-DD65E5CD6464}"
ProjectSection(WebsiteProperties) = preProject
SccProjectName = "SAK"
SccAuxPath = "SAK"
SccLocalPath = "SAK"
SccProvider = "SAK"
TargetFrameworkMoniker = ".NETFramework,Version%3Dv2.0"
ProjectReferences = "{f977dcec-ed6c-485f-ab12-1fe31b7cbc5c}|Logic.dll;"
Debug.AspNetCompiler.VirtualPath = "/localhost_61694"
Debug.AspNetCompiler.PhysicalPath = "..\..\..\..\..\..\TFS\StyleRiver\BO\BO 25.7.17\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_61694\"
Debug.AspNetCompiler.Updateable = …Run Code Online (Sandbox Code Playgroud) 在ASP.NET Core 2.0没有必要对包括个体package references中.csproj的文件.Microsoft.AspNetCore.Allmetapackage包含所有必需的包.我们可以将这个元数据包包含在.csproj文件中:
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
Run Code Online (Sandbox Code Playgroud)
.Net Core应用程序中这个元数据包的主要优点和缺点是什么?(也考虑跨平台自包含的应用程序)
我正在使用 VS 2019 16.9.0 Preview 1.0 并且有一个具有以下 PropertyGroup 的项目
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<LangVersion>latest</LangVersion>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
在我的 .editorconfig 中,我为以下划线开头的字段创建了规则_。在 Visual Studio 中,我可以看到错误为IDE1006. 但是,这不会导致构建失败。从我所读到的设置<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>应该会导致构建失败。我在 Visual Studio 和命令行中使用dotnet build.
我怎么能有这个错误导致构建失败?
csproj ×10
c# ×4
.net ×3
asp.net-core ×2
.net-5 ×1
.net-core ×1
dependencies ×1
editorconfig ×1
msbuild ×1
project ×1
vsix ×1